I'm trying to implement a clock thread that sends messages and get blocked when the message queue it's full.
So I try this: void func() { int n; while (1) { receive( (int i) { writeln(n, " : Received the number ", i); n++;} ); } } void clock() { receive((Tid tid) { while (1) { writeln("sending..."); send(tid, 42); Thread.sleep(dur!"msecs"(1000)); } }); } void main() { auto tid = spawn(&func); setMaxMailboxSize(tid, 1, OnCrowding.block); auto clock = spawn(&clock); send(clock, tid); } I get a screen full of "sending..." but func never receive any message. But when I try this in main() : void main() { auto tid = spawn(&func); setMaxMailboxSize(tid, 1, OnCrowding.block); while (1) { Thread.sleep(dur!"msecs"(1000)); writeln("sending..."); send(tid, 42); // Receive the result code. } //auto clock = spawn(&clock); //send(clock, tid); } It works and I get "sending..." and received pairs on screen. Why is hapening this ? Note: I try it with dmd 2.059 x64 and gdmd 4.6.3 -- I'm afraid that I have a blog: http://zardoz.es