Signals are used as a synchronization mechanism. They are used for signaling other tasks that a certain event has occurred. Signals correspond to Event objects in Win32.
For example, one thread can create a signal to wait for arriving messages.
#include <oops/r3signal.h>
signal = R3New(R3CLID_SIGNAL,
R3TAG_END);
for(;;) {
/* wait (sleep) until somebody signals us up */
R3DoA(signal, R3SIGM_WAIT, NULL);
/* somebody wants us to do something */
...
}
The sender task code might look as follows:
/* prepare data for the thread */
...
/* wake up the thread */
R3DoA(signal, R3SIGM_SET, NULL);