I am using the recommended message passing threading model for my project, and it is not always clear how to do things in the best way;

1. receive() pattern matching -- what is common here, always send (int, someData) where int is a value you compare to. Or create dummy types that you can match on directly?

receive(int cmd, int[] data) { if(cmd == SomeCommand) doStuff(data); }
  receive(SomeCommand, int[] data) { doStuff(data); }

The latter seems nicer, but what's the best way to define those types?

Or maybe it's better to be even more general?  Something like;

receive(void delegate(ARGS) f, ARGS a) { f(a); }


2. What is the reason you can't decide which thread(s) to receive() from and is there any way around it? Right now I need to have a static updateAll() method that is aware of all instances and call update() on them as needed. Also it's very hard to have generic modules that has their own threads because they can receive messages from other modules threads...

3. Is there a recommended way to deal with creating immutable data ? Right now I just cast to immutable before returning the data since I know I have the only reference, but it would be nice to have something like a `UniqueReference` containing a immutableMove() method...


Reply via email to