[dmd-concurrency] Sending mesages to non-listening threads

Andrei Alexandrescu andrei at erdani.com
Tue Jan 12 14:26:03 PST 2010


Michel Fortin wrote:
> It's nice that you can now send messages to any thread like this:
> 
> 	tid.send(i);
> 
> But... what if you're sending a message to the wrong thread, to a thread that isn't listening for messages? Do the messages accumulate in memory until no memory is left? If that's the case, sending messages to the wrong thread would become a memory leak. Any solution?

I think mailbox crowding is a liability of message-passing systems in 
general. We can mitigate that in a number of ways, including an API for 
threads to set a ceiling for their mailbox:

enum OnCrowding { wait, throwException }
setMaxMailboxSize(size_t messages, OnCrowding doThis);


Andrei


More information about the dmd-concurrency mailing list