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

Reply via email to