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