From: "M. Edward (Ed) Borasky" Date: 2007-10-12T15:18:26+09:00 Subject: Re: Inter-Process Messaging Daniel DeLorme wrote: > Thanks for all the answers. I now have: > > primitives: > - TCPServer/TCPSocket > - UNIXServer/UNIXSocket > - IO.pipe > - named pipes > - shared memory (can't find low-level lib?) > > libraries: (after some digging on rubyforge) > - DRb > - Event Machine > - ActiveMessaging > - Slave > - BackgroundDRb > - System V IPC > - POSIXIPC (not released) > - reliable-msg > - MPI Ruby > - stomp / stompserver / stompmessage > - AP4R (Asynchronous Processing for Ruby) > > Frankly I'm still not entirely clear on what are the advantages of each, > both in terms of features and in terms of performance. I guess I'll just > have to write some code to find out... > > Daniel > > 1. You missed Rinda, a Linda derivative layered on top of DRb. 2. There are basically two ways to do concurrency/parallelism: shared memory and message passing. I'm not sure what the *real* tradeoffs are -- I've pretty much had my brain hammered with "shared memory bad -- message passing good", but there obviously must be *some* counter-arguments, or shared memory wouldn't exist. :) 3. System V IPC has three components -- message queues, semaphores, and shared memory segments. So ... if you've found a System V IPC library, you've found a shared memory library.