lib/thread/promise.rb in thread-0.0.2 vs lib/thread/promise.rb in thread-0.0.3

- old
+ new

@@ -8,15 +8,20 @@ # 0. You just DO WHAT THE FUCK YOU WANT TO. #++ require 'thread' +# A promise is an object that lets you wait for a value to be delivered to it. class Thread::Promise + # Check if a value has been delivered. def delivered? instance_variable_defined? :@value end + alias realized? delivered? + + # Deliver a value. def deliver (value) return if delivered? @value = value @@ -29,17 +34,19 @@ self end alias << deliver + # Get the value that's been delivered, if none has been delivered yet the call + # will block until one is delivered. def value return @value if delivered? mutex.synchronize { cond.wait(mutex) } - return @value + @value end alias ~ value private