Sha256: 9d2bddcff90d64fa75faca0a43aff87eeead02a4800cff70027edec7fb53fe44
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
Keeper!? ======== Ever wished you could spawn several threads, each of them waiting for a certain event to happen, without having to do the manual book-keeping of condition variables and mutexes? Now you can! Keeper is a library that allows multiple threads to wait for incoming events. Have a look at this example code from the docs: events = Keeper::Keeper.new [:pang, :boom, :pow].each_with_index do |event, i| this_many = i + 1 this_many.times do |i| Thread.new do events.wait_for(event) puts "#{event}:#{i}!" events.fire(event == :pang ? :boom : :pow) end end puts "#{this_many} threads waiting for #{event}" end print "Pause for effect" 3.times { sleep 1 and print "." } puts events.fire(:pang) Thread.list.reject { |th| th == Thread.current }.map(&:join) And here’s your output: 1 threads waiting for pang 2 threads waiting for boom 3 threads waiting for pow Pause for effect... pang:0! boom:0! boom:1! pow:0! pow:2! pow:1! Ain’t that awesome?! I think it is. License ------- X11. It means you can use Keeper for whatever you want as long as you ship the license text with it, it’s in LICENSE.txt.
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
keeper-1.0.0 | README.markdown |