On 15-07-04 07:30 AM, Elias Mårtenson wrote:
The following question was raised during my development of an asynchronous library I'm currently building for RabbitMQ.

Aside / rhetorical: Are you trying to achieve a certain level of "efficiency"?  If so, read on.

I've been working on flow-based concepts for 25+ years (I use various languages, incl. CL, as "assemblers").

The FBP model is kinda-like Actors (or CSP), with the embellishment that siblings cannot "see" or know about one another - they must ask their common parent to distribute messages.

FBP essentially discards most of the O/S and uses a small handful of concepts, e.g. a scheduler, components, ports (queues), ready/wait queues.

A very small "kernel" to handle only this set of concepts - entirely eschewing the use of processes - can be easily built.  If you can read C, then peruse https://github.com/guitarvydas/collate-fbp-classic for the most bare-bones implementation of these concepts I have come up with to date (the example is slightly more complicated than necessary, because the "Collate" problem (page 91 of Paul Morrison's FBP book) requires the use of bounded buffers).  If you don't read C, and are interested, ask me.

pt