If a task is running and is then blocked by a semaphore pend call because it is waiting for a resource or event, the scheduler will change the task’s status accordingly. When the task unblocks because the semaphore is posted by another thread, the scheduler will immediately move the task’s status back to the READY state so that it can run as soon as it is the highest priority thread that is READY.