Synopsis
void OMbegin_op ();
void OMend_op ();
Description
OMbegin_op and OMend_op suspend then subsequently resume execution of objects.
You use OMbegin_op and OMend_op in pairs:
OMbegin_op();
... /* Statements that update objects, such as
by making connections or setting values. */
OMend_op();
OMbegin_op instructs the Object Manager to queue event notifications that subsequently occur. Consequently, objects do not execute.
OMend_op delivers the queued notifications to the appropriate objects. The objects execute according to those notifications.
Calls to OMbegin_op and OMend_op can be nested. OMend_op delivers the notifications queued since the most recent call to OMbegin_op. It also removes those notifications from the queue.
OMend_op acts as a synchronization point. When OMend_op returns, all notifications queued since the most recent call to OMbegin_op will have been delivered and the objects will have finished executing.
OMbegin_op is generally easier to use than its lower-level alternative, OMpush_ctx, but is not as flexible. OMbegin_op and OMend_op are equivalent to the following calls to OMpush_ctx and OMpop_ctx:
OMpush_ctx(OMroot_obj, OM_STATE_TRANSIENT, 0, 0);
...
OMpop_ctx(OMroot_obj);
See also