diff options
author | Christopher Faylor <me@cgf.cx> | 2002-11-05 07:43:02 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-11-05 07:43:02 +0300 |
commit | d2637322384d97148007decb03d4af6f87159752 (patch) | |
tree | 6a38c7199d025cfa5054b7bf21bb17b8a369e79c | |
parent | 73f7245be241129f9fe50a06f88e0d271ad6aac7 (diff) |
* pinfo.cc (_pinfo::commune_send): Set priority low when sleeping, waiting for
commune completion so that we don't spin waiting for lower priority processes.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/pinfo.cc | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 4bffe2169..c6851787e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 2002-11-04 Christopher Faylor <cgf@redhat.com> + * pinfo.cc (_pinfo::commune_send): Set priority low when sleeping, + waiting for commune completion so that we don't spin waiting for lower + priority processes. + +2002-11-04 Christopher Faylor <cgf@redhat.com> + * sigproc.cc (WAIT_SIG_PRIORITY): Bump to THREAD_PRIORITY_TIME_CRITICAL. 2002-11-04 Christopher Faylor <cgf@redhat.com> diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 0f9510fda..f47e3bd2d 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -362,12 +362,17 @@ _pinfo::commune_send (DWORD code) if (sig_send (this, __SIGCOMMUNE)) goto err; + /* FIXME: Need something better than an busy loop here */ bool isalive; while ((isalive = alive ())) if (myself->hello_pid <= 0) break; else - Sleep (0); + { + DWORD prio = SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE); + Sleep (0); + SetThreadPriority (GetCurrentThread (), prio); + } CloseHandle (tome); tome = NULL; |