* miscfuncs.cc (yield): Drop thread priority only once.

This commit is contained in:
Corinna Vinschen
2011-07-07 06:21:24 +00:00
parent 57e64035f8
commit 66965620fc
2 changed files with 7 additions and 3 deletions

View File

@ -239,17 +239,17 @@ check_iovec (const struct iovec *iov, int iovcnt, bool forwrite)
void
yield ()
{
int prio = GetThreadPriority (GetCurrentThread ());
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
for (int i = 0; i < 2; i++)
{
int prio = GetThreadPriority (GetCurrentThread ());
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE);
/* MSDN implies that SleepEx(0,...) 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. */
SleepEx (0, false);
SetThreadPriority (GetCurrentThread (), prio);
}
SetThreadPriority (GetCurrentThread (), prio);
}
/* Get a default value for the nice factor. When changing these values,