On Saturday, 19 May 2012 at 13:26:20 UTC, japplegame wrote:
Multithreading in D confuses me more and more.

import std.concurrency;
import std.stdio;
shared Tid tid;
void main() {
  send(cast(Tid)tid, "Hello, World");
}
void worker() {
   writeln(receiveOnly!string);
}
shared static this() {
  tid = cast(shared)spawn(&worker);
}

I hate these explicit casts. It is impossible sharing anything between threads without these ugly casts from/to shared. Seems like something wrong in program design when I'm forced to use explicit casts. But I don't understand what is it exactly.

You don't need to mark Tids as shared.

For example. I need create mutable object in one thread and send to another. I don't need to share this object, just create, send and forget. But I have no idea how make this without using shared attribute and casting to/from it.

If you originally create it as shared, you don't need to do the casting.

Reply via email to