yield: Don't lower thread priority, it leads to starvation
...and it's not required anymore to have the same effect as the original code post-XP. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
994a4b7dcc
commit
51a993c266
|
@ -85,17 +85,18 @@ check_iovec (const struct iovec *iov, int iovcnt, bool forwrite)
|
|||
void
|
||||
yield ()
|
||||
{
|
||||
int prio = GetThreadPriority (GetCurrentThread ());
|
||||
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
|
||||
/* MSDN implies that SleepEx will force scheduling of other threads.
|
||||
/* MSDN implies that Sleep will force scheduling of other threads.
|
||||
Unlike SwitchToThread() the documentation does not mention other
|
||||
cpus so, presumably (hah!), this + using a lower priority will
|
||||
stall this thread temporarily and cause another to run.
|
||||
(stackoverflow and others seem to confirm that setting this thread
|
||||
to a lower priority and calling Sleep with a 0 paramenter will
|
||||
have this desired effect) */
|
||||
have this desired effect)
|
||||
|
||||
CV 2017-03-08: Drop lowering the priority. It leads to potential
|
||||
starvation and it should not be necessary anymore
|
||||
since Server 2003. See the MSDN Sleep man page. */
|
||||
Sleep (0L);
|
||||
SetThreadPriority (GetCurrentThread (), prio);
|
||||
}
|
||||
|
||||
/* Get a default value for the nice factor. When changing these values,
|
||||
|
|
Loading…
Reference in New Issue