A thread control and condition example is shown in Example E-1.
/* * cma Alert Example */ /* * Outermost alert scope */ { . . . cma_t_alert_state outer_a_s; . . . /* * Create a nested alert scope, saving the previous setting. In this * scope, alerts will be disabled. */ cma_alert_disable_general (&outer_a_s); /* * Now alerts are disabled. */ . . . /* * Create another nested scope. In this scope, alerts will be enabled. */ { cma_t_alert_state inner_a_s; . . . cma_alert_enable_general (&inner_a_s); /* * Now alerts are enabled. */ . . . /* * Create another nested scope. In this scope, we will be enabling * asynchronous alerts. */ { cma_t_alert_state async_a_s; . . . /* * First capture the alert state, so it can be restored later. */ cma_alert_disable_asynch (&async_a_s); /* * Now enable asynchronous alerts. */ cma_alert_enable_asynch (); /* * Now asynchronous alerts are enabled. */ . . . /* * Now restore the previous alert state, which disables * asynchronous alerts. */ cma_alert_restore (&async_a_s); /* * Now asynchronous alerts are disabled; synchronous alerts * are still enabled. */ } . . . /* * There is no requirement to restore all alert scopes. However, you * may not restore an inner scope after restoring an outer one. */ } . . . /* * Restore the original alert state. */ cma_alert_restore (&outer_a_s); . . . }