Sha256: c08be1a7cc229e8d7f279643db2fd4fea395cf9354415d1d56e5e69404036fd5
Contents?: true
Size: 885 Bytes
Versions: 1
Compression:
Stored size: 885 Bytes
Contents
#-- # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE # Version 2, December 2004 # # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION # # 0. You just DO WHAT THE FUCK YOU WANT TO. #++ require 'thread' class Thread::Promise def delivered? instance_variable_defined? :@value end def deliver (value) return if delivered? @value = value if cond? mutex.synchronize { cond.broadcast } end self end alias << deliver def value return @value if delivered? mutex.synchronize { cond.wait(mutex) } return @value end alias ~ value private def cond? instance_variable_defined? :@cond end def cond @cond ||= ConditionVariable.new end def mutex @mutex ||= Mutex.new end end module Kernel def promise Thread::Promise.new end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
thread-0.0.2 | lib/thread/promise.rb |