What does NTSTATUS 0x40000024 (STATUS_NO_YIELD_PERFORMED) mean?

 
Previous Next
STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE STATUS_TIMER_RESUME_IGNORED

STATUS_NO_YIELD_PERFORMED

The scheduler had no thread to run for the requested yield

A yield operation asks the scheduler to give another ready thread an opportunity to execute. The Win32 SwitchToThread contract is processor-local: if no other thread is ready on the current processor, no switch occurs. STATUS_NO_YIELD_PERFORMED represents that no-yield outcome in the native status space.

This is not evidence that the machine has only one thread or that other processors are idle. It also does not make a yield loop a correct synchronization primitive. If code depends on another worker making progress, use an event, semaphore, condition variable, completion port, or another explicit coordination mechanism rather than repeatedly yielding.

What to inspect

  • Capture the scheduler loop and why the caller expected another thread to be runnable.
  • Check processor affinity and concurrency limits before interpreting the result globally.
  • Replace yield-based waiting with explicit synchronization when progress is required.

References


Looking for a different code? Search another status or error code.