'importing' threads — i.e. thread_attachThis()
Cauterite via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Aug 12 03:45:22 PDT 2016
I'm planning on 'importing' a thread into the D runtime using
thread_attachThis(), and was just wondering about the potential
pitfalls of this process. For example:
- Would having an entry function other than
core.thread.thread_entryPoint() pose problems? What about during
stack unwinding? Should I try to replicate the exception handling
code of thread_entryPoint() in my own entry function?
- I'm aware of having to invoke rt_moduleTlsCtor() explicitly,
but what about rt_moduleTlsDtor() ? Should I again follow
thread_entryPoint()'s behaviour here?
- How important is it to run the thread though _beginthreadex() ?
I know the Microsoft CRT uses _beginthreadex()/_threadstartex()
to set up the thread's '_tiddata' object, but since D uses the
Digital Mars _beginthreadex (which I don't have source for) I'm
not entirely sure what goes on in there. It *appears* to be
messing around with a global '__thdtbl' object.
- Do I need to call thread_detachThis() when the thread
terminates, or can I just wait until the corresponding Thread
object gets destroyed by the GC?
I'm using DMD on Windows x32 by the way.
Thanks for your help.
More information about the Digitalmars-d-learn
mailing list