Concept Flow - xSemaphoreGive() and xSemaphoreTake()
Task wants resource
Call xSemaphoreTake()
Is semaphore available?
No→Block task, wait
Yes
Task uses resource
Call xSemaphoreGive()
Semaphore released
Unblock waiting task if any
Next task takes semaphore or resource free
This flow shows how a task tries to take a semaphore to access a resource, waits if unavailable, and then gives it back to release.
