[M3devel] Thread local storage?
Tony Hosking
hosking at cs.purdue.edu
Thu Apr 14 23:05:27 CEST 2011
I think that these were introduced into the C libraries by Jay.
On Apr 14, 2011, at 11:45 AM, Rodney M. Bates wrote:
> I have never understood what "thread local storage" is all about, in particular,
> what need it addresses.
>
> All local variables and parameters are already private to a thread, as consequence
> of semantics going back as far as Algol-60. They are allocated space when and
> only when a call is executed. That can't happen until there is a thread to
> execute the call and it has to have its own private stack where the space is
> allocated, or it wouldn't work as a thread, (OK leaving out languages like
> very old Fortrans that don't support recursion either.)
>
> That leaves global variables. At least some of these have to be shared by all
> the threads of a process, or the threads could have no shared memory interaction,
> and thus no function that would not be served by just separate processes running
> separate main programs.
>
> If you need variables that are private to a thread but in some sense global,
> just put them in the Thread.Closure. They would hardly make sense as declared
> lexically global variables anyway, since, except for the initial thread provided
> by the OS/RTS, their lifetime does not cover the entire execution of the main
> program.
>
> So what are they really, and what are they for? And do we even have or use them in
> Modula-3?
>
> It is looking to me like some sort of accommodation for them in cm3cg may be what has
> undermined m3gdb in the CVS head.
>
> Rodney Bates
More information about the M3devel
mailing list