Add object transfer example to README.

This commit is contained in:
Patrick Mahoney 2011-12-20 22:16:50 -06:00
parent edc927709a
commit 6b6be3c2e5
1 changed files with 18 additions and 1 deletions

View File

@ -59,6 +59,23 @@ Install the gem with:
puts "value should be zero: #{mem.get_int(0)}" puts "value should be zero: #{mem.get_int(0)}"
== Transfer Objects Across Processes
# allocate a sufficient memory block
mem = ProcessShared::SharedMemory.new(1024)
# sub process can write (serialize) object to memory (with bounds checking)
pid = fork do
mem.write_object(['a', 'b'])
end
Process.wait(pid)
# parent process can read the object back (synchronizing access
# with a Mutex left as an excercie to reader)
mem.read_object.must_equal ['a', 'b']
== Todo == Todo
* Test ConditionVariable * Test ConditionVariable
@ -69,7 +86,7 @@ Install the gem with:
* Add finalizer to Mutex? (finalizer on Semaphore objects may be enough) or a method to * Add finalizer to Mutex? (finalizer on Semaphore objects may be enough) or a method to
explicitly close and release resources? explicitly close and release resources?
* Test semantics of crashing processes who still hold locks, etc. * Test semantics of crashing processes who still hold locks, etc.
* Improve interface to SharedMemory to be more Array-like and generally usable * Is SharedArray with Enumerable mixing sufficient Array-like interface?
* Remove bsem from libpsem as it is of little use and doesn't work on Mac OS X * Remove bsem from libpsem as it is of little use and doesn't work on Mac OS X
* Possibly implement BoundedSemaphore with arbitrary bound (in Ruby * Possibly implement BoundedSemaphore with arbitrary bound (in Ruby
rather than relying on sem_getvalue()), but this is of little rather than relying on sem_getvalue()), but this is of little