Quote from hft_boy:
Thanks for the feedback. The words you mentioned -- task processing, async programming and actor model -- to my mind are all just frameworks or ways of setting up your APIs. And of course it's important to set up APIs in a nice way. But that has nothing to do with their implementation, which is what I'm dealing with here.
As I said, sockets are one way to go, and they are very elegant. ZeroMQ uses TCP and Unix domain sockets underneath, as far as I can tell. Which can be plenty fast. I am skeptical of 16M msg / s over TCP unless you have TCP_NODELAY turned off, in which case latency might be pretty high.
At a high level, shared memory mapping isn't really any different from TCP or Unix domain sockets, except that it's all handled in user space (and it's faster). I also said that the hard part is writing a nice API to this thing so it looks like a socket, and so the calls are all agnostic as to whether it's another process on the same machine or on another machine.
Cheers,