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.

Reply via email to