Keil Logo

Thread States

Each RTX thread is always in exactly one state, which tells the disposition of the thread.

State Description
RUNNING The thread that is currently running is in the RUNNING state. Only one thread at a time can be in this state. The osThreadGetId() function returns the Thread ID (TID) of the currently executing thread.
READY Threads which are ready to run are in the READY state. Once the running thread has completed processing, RTX selects the next ready thread with the highest priority and starts execution.
WAIT_DLY Threads which are waiting for a delay to expire are in the WAIT_DLY State. Once the delay has expired, the thread is switched to the READY state. The osDelay() or osWait() function places a thread in the WAIT_DLY state. Refer to the RTOS documentation for details about the delay and wait function.
WAIT_ITV Threads which are waiting for an interval to expire are in the WAIT_ITV State. Once the interval delay has expired, the thread is switched back to the READY state.

This state is not available for CMSIS-RTOS. Use the osTimer features instead.

WAIT_OR Threads which are waiting for at least one event flag are in the WAIT_OR state. When the event occurs, the thread is switched to the READY state. The osSignalWait() function places a thread in the WAIT_OR state.
WAIT_AND Threads which are waiting for all the set events to occur are in the WAIT_AND state. When all event flags are set, the thread is switched to the READY state. osSignalWait() function places a thread in the WAIT_AND state.
WAIT_SEM Threads which are waiting for a semaphore are in the WAIT_SEM state. When the token is obtained from the semaphore, the thread is switched to the READY state. The osSemaphoreWait() function places a thread in the WAIT_SEM state.
WAIT_MUT Threads which are waiting for a free mutex are in the WAIT_MUT state. When a mutex is released, the thread acquire the mutex and switch to the READY state. The osMutexWait() function places a thread in the WAIT_MUT state.
WAIT_MBX Threads which are waiting for a mailbox message are in the WAIT_MBX state. Once the message has arrived, the thread is switched to the READY state.
Threads waiting to send a message when the mailbox is full are also put into the WAIT_MBX state. When the message is read from the mailbox, the thread is switched to the READY state. In this case, the osMailGet() function places a thread in the WAIT_MBX state.
INACTIVE Threads which have not been started or threads which have been deleted are in the INACTIVE state. The osThreadTerminate() function places a thread that has been started (with osThreadCreate()) into the INACTIVE state.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.