Sha256: 42fcbfedf6ccbffc2404542719d84e6ba5471826faeebf7f1687437a7f8233a6
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
thread - various extensions to the thread stdlib ================================================ Pool ==== All the implementations I looked at were either buggy or wasted CPU resources for no apparent reason, for example used a sleep of 0.01 seconds to then check for readiness and stuff like this. This implementation uses standard locking functions to work properly across multiple Ruby implementations. Example ------- ```ruby require 'thread/pool' pool = Thread::Pool.new(4) 10.times { pool.process { sleep 2 puts 'lol' } } pool.shutdown ``` You should get 4 lols every 2 seconds and it should exit after 10 of them. Channel ======= This implements a channel where you can write messages and receive messages. Example ------- ```ruby require 'thread/channel' channel = Thread::Channel.new channel.send 'wat' channel.receive # => 'wat' channel = Thread::Channel.new { |o| o.is_a?(Integer) } channel.send 'wat' # => ArgumentError: guard mismatch Thread.new { while num = channel.receive(&:even?) puts 'Aye!' end } Thread.new { while num = channel.receive(&:odd?) puts 'Arrr!' end } loop { channel.send rand(1_000_000_000) sleep 0.5 } ```
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
thread-0.0.1.1 | README.md |
thread-0.0.1 | README.md |