Getting All Instances of a Thread-Local
Sergey Gromov
snake.scaly at gmail.com
Sun Jan 18 03:41:30 PST 2009
Sat, 17 Jan 2009 16:02:12 +0000 (UTC), dsimcha wrote:
> == Quote from Sergey Gromov (snake.scaly at gmail.com)'s article
>> Sat, 17 Jan 2009 05:17:29 +0000 (UTC), dsimcha wrote:
>>> Using D2's builtin thread-local storage, is there a way to get all instances
>>> (one per thread) of a given thread-local variable? If not, can anyone
>>> recommend any workarounds, given that:
>>>
>>> 1. Each instance of this variable is not written to after initialization,
>>> i.e. not more than once during the execution of the program.
>>> 2. I must be able to tell instances created by threads that are still alive
>>> from those created by dead threads. This rules out simply appending the
>>> values to an array.
>> I wonder if struct destructor is called if you put it in TLS and thread
>> dies. Then you could use RAII to remove irrelevant data from the
>> 'simple array'.
>
> No, it isn't. Just tried it.
OTOH, if you can gain access to the data, it's not thread-local anymore.
Simply put your data synchronously into a global array when it's ready,
and synchronously remove it when a thread dies. You can use scope() or
RAII in your thread function for that.
More information about the Digitalmars-d
mailing list