Wrt. threadlocal by default: shared module constructors
Lionello Lunesu
lio at lunesu.remove.com
Wed May 13 17:32:14 PDT 2009
Denis Koroskin wrote:
> On Wed, 13 May 2009 16:50:25 +0400, downs <default_357-line at yahoo.de> wrote:
>
>> So .. how will the threadlocal global variables be initialized?
>>
>> Obviously, they can't be initialized in the static constructor, since
>> that is only run once.
>>
>> But if the static constructors are run on every new thread, what about
>> the shared variables that only need to be initialized once?
>>
>> For these reasons, I propose two changes:
>>
>> 1) Module constructors are run at thread creation
>>
>> 2) the introduction of _shared module constructors_, who are run before
>> module constructors, at program startup, to initialize the global shared
>> variables.
>>
>> I don't see any other way to handle these issues.
>>
>> Feedback appreciated.
>
> static this()
> {
> }
>
> static shared this()
> {
> }
>
> static shared ~this()
> {
> }
>
> static ~this()
> {
> }
>
> (in that order)
>
> ?
I think he meant shared first/last:
static shared this(){}
static this(){}//main thread
static this(){}//thread x
...
static ~this() {}//thread x
static ~this() {}// main thread
static shared ~this() {}
...which is (as Kagamin suggested) similar to they way DLLs are
(de)inited on Windows.
vote++ by the way.
L.
More information about the Digitalmars-d
mailing list