<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Here is an interesting note:<BR>
 <BR>
<A href="http://www.usenix.org/publications/library/proceedings/usenix01/freenix01/full_papers/wood/wood_html/index.html">http://www.usenix.org/publications/library/proceedings/usenix01/freenix01/full_papers/wood/wood_html/index.html</A><BR>
 <BR>
 <BR>
They implement thr_suspend/thr_continue over pthreads very very much like we do.<BR>
They use signals and semaphores.<BR>
They use different signals for suspend vs. resume.<BR>
  I think we use only one and should look into how/why.<BR>
They only suspend one thread at a time, using a global semaphore.<BR>
  I think we do the same -- only one thread can be in the GC suspending other threads at a time.<BR>
 <BR>
<BR>
 - Jay<BR><BR> <BR>
<HR id=stopSpelling>
From: jay.krell@cornell.edu<BR>To: hosking@cs.purdue.edu; m3devel@elegosoft.com<BR>Date: Sun, 15 Nov 2009 03:33:59 +0000<BR>Subject: Re: [M3devel] thread suspend/resume?<BR><BR>
<STYLE>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</STYLE>
(just based on the checkin comment, haven't looked at the code)<BR> <BR>Interesting.<BR>Should we use these sorts of functions more?<BR>  Direct non-Posix somewhat target-dependent thread suspend/resume?<BR>NetBSD appears to have suspend/resume but maybe not "all".<BR>Solaris has them too, thr_suspend((thread_t)pthread), and thr_continue.<BR>I don't see an "all" function but haven't looked fully.<BR>I see some evidence that Linux has them too but haven't tracked it down.<BR>NT already uses SuspendThread/ResumeThread.<BR>That leaves? Nothing at all?<BR> Ok I should look into Irix, AIX, HP-UX, OpenVMS, Tru64.<BR> And this stuff doesn't work yet for OpenBSD, it's using user threads.<BR> <BR> <BR>Maybe thread suspend/resume is the "portable enough" interface, implement<BR>it fairly directly with #ifdefs and only use the signals/semaphore on few systems?<BR> <BR> <BR>(note that Darwin does have the semaphores that are avoided here,<BR>just slightly different Mach semaphores)<BR><BR> - Jay<BR> <BR>> Date: Sat, 14 Nov 2009 22:41:39 +0000<BR>> To: m3commit@elegosoft.com<BR>> From: hosking@elego.de<BR>> Subject: [M3commit] CVS Update: cm3<BR>> <BR>> CVSROOT: /usr/cvs<BR>> Changes by: hosking@birch. 09/11/14 22:41:39<BR>> <BR>> Modified files:<BR>> cm3/m3-libs/m3core/src/thread/PTHREAD/: ThreadPThreadC.c <BR>> <BR>> Log message:<BR>> Reorder for readability.<BR>> <BR>                                        </body>
</html>