Minx

Massive and pervasive concurrency with Minx!

Minx uses the powerful concurrency primitives outlined by Tony Hoare in his famous book "Communicating Sequential Processes".

Usage

Minx lets you easily create concurrent programs using the notion of processes and channels.

# Very contrived example...
chan = Minx.channel

Minx.spawn { chan.send("Hello, World!") }
Minx.spawn { puts chan.receive("Hello, World!") }

These primitives, although simple, are incredibly powerful. When reading from or writing to a channel, a process yields execution -- and thus blocks until another process also participates in the communication. An example of when this would be useful is a simple network server:

# Create a channel for the incoming requests.
requests = Minx.channel

# Spawn 10 workers.
10.times do
  Minx.spawn do
    requests.each {|request| handle_request(request) }
  end
end

In the near future, evented IO will be implemented, allowing for highly performant network and file applications.

Documentation

See the full documentation.

Copyright (c) 2010 Daniel Schierbeck. See LICENSE for details.