Thread in detached state?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 13 11:45:57 PST 2015


On 11/13/2015 07:35 AM, Ish wrote:
> I was directed here from General list, so be patient with me. I am
> looking for syntax for creating a detached-state thread in the spirit of
> POSIX thread attribute PTHREAD_CREATE_DETACHED (the thread resources are
> released on termination and not when the main thread terminates - allows
> for a very large number of threads).
>
> Sample code with call will be helpful.

I think the following is the idea:

import std.stdio;
import core.thread;

extern(C) void rt_moduleTlsDtor();

void threadFunc() {
     writeln("Worker thread started");

     thread_detachThis();

     scope(exit) rt_moduleTlsDtor();

     foreach (i; 0 .. 3) {
         Thread.sleep(1.seconds);
         writeln("Working...");
     }
     writeln("Worker terminating");
}

void main() {
     writeln("Creating thread in main");
     auto worker = new Thread(&threadFunc);

     writeln("Starting thread in main");
     worker.start();

     writeln("main terminating");
}

The output:

Creating thread in main
Starting thread in main
main terminating
Worker thread started
Working...
Working...
Working...
Worker terminating

Ali



More information about the Digitalmars-d-learn mailing list