On 11/04/2013 10:30 PM, Rickard Bäckman wrote:
David,

On Apr 11, 2013, at 2:15 PM, David Holmes wrote:

Rickard,
On 11/04/2013 9:51 PM, Rickard Bäckman wrote:
Hi all,

can I please have reviews for this change.

In the current implementation do_suspend uses spin loops to wait until a thread 
has been suspended. I would like to change that to use semaphores to reduce CPU 
usage and also make it easier to have a deterministic timeout. Since we are 
posting to the semaphore in the signal handler we can't use pthread_semaphore 
since it isn't async safe, which is why all implementations uses low-level 
os-specific semaphore constructs.

POSIX Semaphore sem_post() is async-signal safe:

Yes, and they are used in the implementation on Linux and BSD. Solaris uses the 
sema_{post,wait,…} (since that was we were already using for other things) and 
on Mac we use semaphore_{signal, wait, …}

So what did you mean about pthread_semaphore (what is that anyway?) ??

I really, really, really don't like seeing three versions of this class :( Can't BSD and Linux at least share a POSIX version? (And I wonder if we can actually mix-n-match UI threads on Solaris with POSIX semaphores on Solaris?)

David

/R


http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04

David
-----

Bug: http://bugs.sun.com/view_bug.do?bug_id=8011882
Webrev: http://cr.openjdk.java.net/~rbackman/8011882/

Thanks
/R


Reply via email to