I'm trying to figure out the best way to have multiple threads that can each send messages to the other threads.

I've come up with two basic approaches, one uses the main thread as a relay, and the other uses a shared array of Tid...thus:

import    std.concurrency;
import    std.stdio;

import    core.thread;

shared    Tid[8]    tidList;

void    worker (int ndx)
{ Thread.sleep (5.msecs);
    writeln ("worker is done");
}

void    main()
{
    auto tid    =    spawn (&worker, 0);
    tidList[0]    =    cast(shared Tid)tid;
    Thread.sleep (40.msecs);
    writeln ("main is done");
}

Is there a reasonable way to decide which way is best? Is there a better way that I just haven't thought of? Are there problems with sending messages via shared Tids that I just haven't thought of yet?

Reply via email to