futuroscope 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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