Semaphores are another very straightforward, but powerful, construct. The word semaphore has a Greek origin – the approximate English translation is sign-bearer, which is a wonderfully intuitive way to think about them. Semaphores are used to indicate that something has happened; they signal events. Some example use cases of semaphores include the following:
- An ISR is finished servicing a peripheral. It may give a semaphore to provide tasks with a signal indicating that data is ready for further processing.
- A task has reached a juncture where it needs to wait for other tasks in the system to catch up before moving on. In this case, a semaphore could be used to synchronize the tasks.
- Restricting the number of simultaneous users of a restricted resource.
One of the convenient aspects of using an RTOS is the pre-existence of semaphores. They are included...