futuroscope 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e066ddbe361ebf3572172f07fbb8a8f01aa19ad
4
- data.tar.gz: d087e61fd2f458e3ad9b4013f5d2fbdd68de6b8e
3
+ metadata.gz: 60ea73929c330082898296c2512037998d2b9ad3
4
+ data.tar.gz: 8886af488ab4d89dedac2e96488bd89f3e5bfd3c
5
5
  SHA512:
6
- metadata.gz: 1691e432210c6caa0275a4961972fef07de521909d4f7eb6d105bcfbc2d652d4f63e99e8cb5290d59efb9cde2fe31b8ec794c98c26694a9808f485cd1a2052a3
7
- data.tar.gz: bc7302b1ebe5f7301fb18b5710ad2db5dd8d9c8e3f6d14034dfe57a4b8d1516b408e0e5bba00c49988d039c36de1fbe8a7ca376eff5061e98adeff1905043e18
6
+ metadata.gz: fdcd4ef68d0fd26892f76e7f0f6ea0ac451569beac1eff44d697205f82837d5b642a25c4b26fbdea4fbc6565fb181d5bf32966e206482559c3623f8346868b9c
7
+ data.tar.gz: dda945e88fc5f37816ab99a8882cc042c24c92e709e613a7b51957d8341e14a9fca65cc43a18ab278cc3c4765ceedf48386e192d5bfae7d4cf7e87142a83772f
@@ -24,21 +24,19 @@ module Futuroscope
24
24
  # Returns a Future
25
25
  def initialize(pool = Futuroscope.default_pool, &block)
26
26
  @mutex = Mutex.new
27
- @condition = ConditionVariable.new
27
+ @queue = Queue.new
28
28
  @pool = pool
29
29
  @block = block
30
30
  @pool.queue self
31
31
  end
32
32
 
33
33
  def run_future
34
- @mutex.synchronize do
35
- begin
36
- @future_value = @block.call
37
- rescue Exception => e
38
- @exception = e
39
- end
40
- @condition.signal
34
+ begin
35
+ @future_value = @block.call
36
+ rescue Exception => e
37
+ @exception = e
41
38
  end
39
+ @queue.push :ok
42
40
  end
43
41
 
44
42
  # Semipublic: Returns the future's value. Will wait for the future to be
@@ -47,11 +45,11 @@ module Futuroscope
47
45
  # Returns the Future's block execution result.
48
46
  def future_value
49
47
  @mutex.synchronize do
50
- return @future_value if defined?(@future_value)
51
- @condition.wait(@mutex)
48
+ begin
49
+ raise @exception if @exception
50
+ return @future_value if defined?(@future_value)
51
+ end while @queue.pop
52
52
  end
53
- raise @exception if @exception
54
- @future_value
55
53
  end
56
54
 
57
55
  def_delegators :future_value,
@@ -1,3 +1,3 @@
1
1
  module Futuroscope
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: futuroscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy