On Sunday, 14 August 2016 at 00:33:18 UTC, Charles Hixson wrote:
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?
I'm sending immutable Tid[string] to each thread, though I don't
spawn new threads after app initializing. Works well if you don't
have to encapsulate your threads.