Some people, when confronted with a problem, think “I know, I’ll use multithreading”. Nothhw tpe yawrve o oblems.

Don’t use threads, use processes. This is the toolkit for interprocess communication that makes it real simple. A good place to start is the documentation for the Cod module.

SYNOPSIS

# Cod's basic elements are channels, unidirectional communication links. 
pipe = Cod.pipe

# You can use those either directly: 
pipe.put :some_ruby_object        # Process A
pipe.get # => :some_ruby_object   # Process B

# Or use them as bricks for more: 
service = beanstalk.service
client  = beanstalk.client(pipe)

service.one { |msg| :response }               # Process A
client.call :ruby_object    # => :response    # Process B

STATUS

Working library. Some rough edges and potential for growth. Have a look at the Cod module to get started.

Working transports include:

  • process (spawn, connecting to $stdout and $stdin)

  • stdio (connects to $stdout and $stdin of current process)

  • pipe (akin to IO.pipe)

  • tcp (server and client)

  • beanstalk (connects to beanstalkd)

At version 0.5.0

© 2011 Kaspar Schiess

1

twitter.com/rogerbraun/status/160813717502705664