Two mechanisms can be used for intertask communication: signals and messages. Signals are used as an intertask flag with which one task can notify another that something has occurred. Messages not only allow one task to notify another, but also carry data from the sending task to the receiving task.
Signals and a task's ability to wait for a signal are the basis for all intertask communication. The message mechanism, which passes more detailed information, is built on top of the signal mechanism. Sending and receiving a message is based on a signal sent to the receiving task, informing it that a message is waiting.