UmsThreadYield function (winbase.h)

Yields control to the user-mode scheduling (UMS) scheduler thread on which the calling UMS worker thread is running.


As of Windows 11, user-mode scheduling is not supported. All calls fail with the error ERROR_NOT_SUPPORTED.


BOOL UmsThreadYield(
  [in] PVOID SchedulerParam


[in] SchedulerParam

A parameter to pass to the scheduler thread's UmsSchedulerProc function.

Return value

If the function succeeds, it returns a nonzero value.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


A UMS worker thread calls the UmsThreadYield function to cooperatively yield control to the UMS scheduler thread on which the worker thread is running. If a UMS worker thread never calls UmsThreadYield, the worker thread runs until it either blocks or is terminated.

When control switches to the UMS scheduler thread, the system calls the associated scheduler entry point function with the reason UmsSchedulerThreadYield and the ScheduleParam parameter specified by the worker thread in the UmsThreadYield call.

The application's scheduler is responsible for rescheduling the worker thread.


Minimum supported client Windows 7 (64-bit only) [desktop apps only]
Minimum supported server Windows Server 2008 R2 [desktop apps only]
Target Platform Windows
Header winbase.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll
API set api-ms-win-core-ums-l1-1-0 (introduced in Windows 7)

See also