Task Communication

FreeRTOS offers five primary inter-task communication mechanisms: queues, semaphores, mutexes, stream buffers, and message buffers. Common for all of these is that they can cause tasks to block if the resource or data is not available. For example, if a task wants to insert an element into a full queue, it will end up waiting (blocking) for some time, and then again check if there is any available space in the queue.