Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2017-03-08 19:44:15 +0300
committerCorinna Vinschen <corinna@vinschen.de>2017-03-08 19:44:15 +0300
commit51a993c266581ba41f1622abd274d9848a37cf1d (patch)
tree0d5d98fac369de8b12450fe13e16503868606353 /winsup
parent994a4b7dccabb706c9dca2cd43c37e87f2cfe665 (diff)
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>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/miscfuncs.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc
index 2117eb978..e2ab7a080 100644
--- a/winsup/cygwin/miscfuncs.cc
+++ b/winsup/cygwin/miscfuncs.cc
@@ -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,