Module: wine Branch: master Commit: e86b4015ff405d4c054b8a5bc855ee655e1a833c URL: https://source.winehq.org/git/wine.git/?a=commit;h=e86b4015ff405d4c054b8a5bc...
Author: Matteo Bruni mbruni@codeweavers.com Date: Fri Nov 19 20:50:29 2021 +0100
ntdll: Call usleep() instead of NtYieldExecution() in NtDelayExecution().
This implements the general fix from b1a79c6b9c3ada0c34b1411b60879962f1815e4d (in particular, making sure that Sleep(0) will not immediately resume execution of the thread if there are no other runnable threads) while preserving the existing behavior of NtYieldExecution() / SwitchToThread(). Thanks RĂ©mi for the idea.
Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/unix/sync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c index 829add0be2d..d5d92145503 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c @@ -1480,7 +1480,7 @@ NTSTATUS WINAPI NtDelayExecution( BOOLEAN alertable, const LARGE_INTEGER *timeou }
/* Note that we yield after establishing the desired timeout */ - NtYieldExecution(); + usleep(0); if (!when) return STATUS_SUCCESS;
for (;;)