A week or two ago there was a lengthy discussion on the topic of coroutines vs. sub-routines that peaked my interest quite a bit. To educate myself a little more on the topic, I wrote a small asynchronous messaging capability. Basically, each object has a message queue, and each method context has an answer queue. Multiple answers can be passed back to a sender through this answer queue. Messages can be sent synchronously, asynchrounsly, or queued asynchronously. The interesting thing to me is that it seems like the whole notion of processes could go away, leaving only method (or block) contexts to be scheduled. Also of interest is the notion that a stack architecture really only handles the specialized case of a synchronous message send. I believe these things we're discussed at length in the previous thread.
Anyway, I had fun exploring the topic and thought I'd share the code...I'd be curious to know more about how the Smalltalk-72 system worked.
The change set is at http://www.advantive.com/squeak
- Stephen
squeak-dev@lists.squeakfoundation.org