Waiting for a Spawn'ed process

Sharad Gupta gsharad007 at yahoo.com
Fri Mar 28 11:43:29 PDT 2014


> If you start the worker with spawnLinked then you will receive 
> a LinkTerminated message.
>
> import std.stdio;
> import std.concurrency;
> import core.thread;
>
> void main()
> {
>     auto worker = spawnLinked(&workerFunc);
>
>     // Wait for worker to terminate
>     bool terminated = false;
>     while (!terminated) {
>         writeln("Waiting for the worker to terminate...");
>
>         terminated = receiveTimeout(1.seconds,
>             (LinkTerminated e) {
>                 if (e.tid == worker) {
>                     writefln("Terminated");
>                 }
>             }
>         );
>     }
> }
>
> void workerFunc()
> {
>     Thread.sleep(3.seconds);
> }
>
> Ali

But this is another spawned process. How can I tell this second 
process to wait on the first one.

eg:

auto processA = spawnLinked(funcA);
auto processB = spawnLinked(funcB);

funcA()
{
   doSomething();
}

funcB()
{
   doSomething();
   // wait for A
   doSomethingElse();
}

This is a simplified example, the real case two process would be 
spawned irrespective to each other. the second process could may 
also be launched by when the first is already done.


More information about the Digitalmars-d-learn mailing list