On 11/01/2014 04:32 PM, Neven wrote:
Ok, a newbie question ahead. I want to create new thread which calls
given function with some parameters. Thus, I think spawn is the right
function for me. However that functions returns Tid and not a Thread
object.

So I want to know how can I make a Thread object out of it. What I would
like to achieve is to wait for spawned thread to finish its execution,
that is join with main thread.

You don't need a Thread object to wait for a thread to finish. One option is to wait for a specific message:

import std.concurrency;

struct Done
{}

void func(int i)
{
    ownerTid.send(Done());
}

void main()
{
    spawn(&func, 42);
    receiveOnly!Done();    // <-- Waiting for the Done message
}

Another option is to wait for all child threads by thread_joinAll():

import core.thread;
// ...
    thread_joinAll();

The reason I suggest the above is because I don't know the answer to your question. :)

Ali

Reply via email to