<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
But doesn't pthread_create make it so? (More so, it makes it so on any new threads.)<BR>
Or it that not portable? Or did I misunderstand the opengroup web page? Or other?<BR>
Or, is this because, like, the Modula-3 notion of "NIL" might not match the pthread notion of "NULL"? I don't believe in that extreme level of portability/disbelief/theory, but...<BR>
Unless someone can tell me about such a system.. in which<BR>
 void* p = 0; <BR>
 printf("%p\n", p);<BR>
 memset(&p, 0, sizeof(p)); <BR>
 printf("%p\n", q); <BR>
 <BR>
doesn't print two identical lines.<BR>
 <BR>
I know the C standard does not guarantee this, and probably therefore Modula-3 doesn't either, but I've never heard of a system on which this isn't true.<BR>
It seems more theoretical than, say, non-IEEE floating point math (which I believe exists on VAX), or, say, 16 bit integers...<BR>
 <BR>
 - Jay<BR><BR> <BR>> From: hosking@cs.purdue.edu<BR>> To: jay.krell@cornell.edu<BR>> Date: Thu, 19 Mar 2009 10:22:59 +1100<BR>> CC: m3devel@elegosoft.com<BR>> Subject: Re: [M3devel] pthreads tls initialization?<BR>> <BR>> The setspecific call is to initialize the handler stack to nil. It is <BR>> needed.<BR>> <BR>> On 19 Mar 2009, at 01:33, Jay wrote:<BR>> <BR>> ><BR>> > http://www.opengroup.org/onlinepubs/000095399/functions/pthread_key_create.html<BR>> ><BR>> ><BR>> > says that thread locals start as zero, but ThreadPThread.m3 does:<BR>> ><BR>> ><BR>> > PROCEDURE InitHandlers () =<BR>> > BEGIN<BR>> > WITH r = pthread_key_create_handlers() DO END;<BR>> > WITH r = pthread_setspecific_handlers(NIL) DO END;<BR>> > initHandlers := FALSE;<BR>> > END InitHandlers;<BR>> ><BR>> ><BR>> > Any reason for that setspecific call?<BR>> ><BR>> ><BR>> > I ask because I think some of this code should just be written in C.<BR>> > But ideally then, the Win32 code should be too.<BR>> > So I'm just reading them, and they differ oddly in that pthread <BR>> > keeps doing like:<BR>> ><BR>> ><BR>> > if not initialized Initialize()<BR>> ><BR>> ><BR>> > and Win32 allocates its thread up front locals via the Modula <BR>> > initializer.<BR>> > Maybe pthread_key is very expensive, and avoided in single threaded <BR>> > apps?<BR>> > But there aren't any, right, because the runtime creates threads, at <BR>> > least one for the garbage collector?<BR>> ><BR>> ><BR>> > - Jay<BR>> <BR></body>
</html>