concurrent-ruby 0.6.1 → 0.7.0.rc0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/concurrent.rb +3 -4
- data/lib/concurrent/atomic.rb +46 -0
- data/lib/concurrent/atomic_reference/concurrent_update_error.rb +7 -0
- data/lib/concurrent/atomic_reference/delegated_update.rb +28 -0
- data/lib/concurrent/atomic_reference/direct_update.rb +28 -0
- data/lib/concurrent/atomic_reference/jruby.rb +8 -0
- data/lib/concurrent/atomic_reference/mutex_atomic.rb +47 -0
- data/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb +24 -0
- data/lib/concurrent/atomic_reference/rbx.rb +16 -0
- data/lib/concurrent/atomic_reference/ruby.rb +16 -0
- data/lib/concurrent/atomics.rb +1 -1
- data/lib/concurrent/configuration.rb +1 -1
- data/lib/concurrent/supervisor.rb +1 -1
- data/lib/concurrent/timer_task.rb +0 -36
- data/lib/concurrent/version.rb +1 -1
- data/lib/concurrent_ruby_ext.so +0 -0
- data/lib/extension_helper.rb +9 -0
- metadata +16 -148
- data/lib/concurrent/actor/actor.rb +0 -270
- data/lib/concurrent/actor/postable.rb +0 -102
- data/lib/concurrent/actors.rb +0 -2
- data/lib/concurrent/atomic/atomic.rb +0 -48
- data/lib/concurrent/runnable.rb +0 -90
- data/lib/concurrent/stoppable.rb +0 -20
- data/spec/concurrent/actor/actor_spec.rb +0 -376
- data/spec/concurrent/actor/postable_shared.rb +0 -218
- data/spec/concurrent/actress_spec.rb +0 -211
- data/spec/concurrent/agent_spec.rb +0 -500
- data/spec/concurrent/async_spec.rb +0 -352
- data/spec/concurrent/atomic/atomic_boolean_spec.rb +0 -172
- data/spec/concurrent/atomic/atomic_fixnum_spec.rb +0 -186
- data/spec/concurrent/atomic/atomic_spec.rb +0 -133
- data/spec/concurrent/atomic/condition_spec.rb +0 -171
- data/spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb +0 -10
- data/spec/concurrent/atomic/copy_on_write_observer_set_spec.rb +0 -10
- data/spec/concurrent/atomic/count_down_latch_spec.rb +0 -151
- data/spec/concurrent/atomic/cyclic_barrier_spec.rb +0 -248
- data/spec/concurrent/atomic/event_spec.rb +0 -200
- data/spec/concurrent/atomic/observer_set_shared.rb +0 -242
- data/spec/concurrent/atomic/thread_local_var_spec.rb +0 -113
- data/spec/concurrent/channel/buffered_channel_spec.rb +0 -151
- data/spec/concurrent/channel/channel_spec.rb +0 -39
- data/spec/concurrent/channel/probe_spec.rb +0 -77
- data/spec/concurrent/channel/unbuffered_channel_spec.rb +0 -132
- data/spec/concurrent/collection/blocking_ring_buffer_spec.rb +0 -149
- data/spec/concurrent/collection/priority_queue_spec.rb +0 -317
- data/spec/concurrent/collection/ring_buffer_spec.rb +0 -126
- data/spec/concurrent/configuration_spec.rb +0 -69
- data/spec/concurrent/dataflow_spec.rb +0 -242
- data/spec/concurrent/delay_spec.rb +0 -91
- data/spec/concurrent/dereferenceable_shared.rb +0 -146
- data/spec/concurrent/exchanger_spec.rb +0 -66
- data/spec/concurrent/executor/cached_thread_pool_shared.rb +0 -115
- data/spec/concurrent/executor/fixed_thread_pool_shared.rb +0 -136
- data/spec/concurrent/executor/global_thread_pool_shared.rb +0 -35
- data/spec/concurrent/executor/immediate_executor_spec.rb +0 -12
- data/spec/concurrent/executor/java_cached_thread_pool_spec.rb +0 -44
- data/spec/concurrent/executor/java_fixed_thread_pool_spec.rb +0 -64
- data/spec/concurrent/executor/java_single_thread_executor_spec.rb +0 -21
- data/spec/concurrent/executor/java_thread_pool_executor_spec.rb +0 -71
- data/spec/concurrent/executor/per_thread_executor_spec.rb +0 -57
- data/spec/concurrent/executor/ruby_cached_thread_pool_spec.rb +0 -69
- data/spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb +0 -39
- data/spec/concurrent/executor/ruby_single_thread_executor_spec.rb +0 -18
- data/spec/concurrent/executor/ruby_thread_pool_executor_spec.rb +0 -171
- data/spec/concurrent/executor/safe_task_executor_spec.rb +0 -103
- data/spec/concurrent/executor/thread_pool_class_cast_spec.rb +0 -52
- data/spec/concurrent/executor/thread_pool_executor_shared.rb +0 -155
- data/spec/concurrent/executor/thread_pool_shared.rb +0 -269
- data/spec/concurrent/executor/timer_set_spec.rb +0 -183
- data/spec/concurrent/future_spec.rb +0 -329
- data/spec/concurrent/ivar_spec.rb +0 -215
- data/spec/concurrent/mvar_spec.rb +0 -380
- data/spec/concurrent/obligation_shared.rb +0 -102
- data/spec/concurrent/obligation_spec.rb +0 -282
- data/spec/concurrent/observable_shared.rb +0 -177
- data/spec/concurrent/observable_spec.rb +0 -56
- data/spec/concurrent/options_parser_spec.rb +0 -71
- data/spec/concurrent/promise_spec.rb +0 -367
- data/spec/concurrent/runnable_shared.rb +0 -68
- data/spec/concurrent/runnable_spec.rb +0 -235
- data/spec/concurrent/scheduled_task_spec.rb +0 -340
- data/spec/concurrent/stoppable_shared.rb +0 -37
- data/spec/concurrent/supervisor_spec.rb +0 -1149
- data/spec/concurrent/timer_task_spec.rb +0 -256
- data/spec/concurrent/tvar_spec.rb +0 -137
- data/spec/concurrent/utility/processor_count_spec.rb +0 -20
- data/spec/concurrent/utility/timeout_spec.rb +0 -50
- data/spec/concurrent/utility/timer_spec.rb +0 -52
- data/spec/spec_helper.rb +0 -41
- data/spec/support/example_group_extensions.rb +0 -52
- data/spec/support/less_than_or_equal_to_matcher.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a37030c113bbaf5da04499b31efd48b49c8244e6
|
4
|
+
data.tar.gz: 794a39695eadb43c80668f28f8c9eb367fbd8dc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c99611c6311e743524a1769f6c1a663be7cee748813d772c5a5b5e7f9bdcd344c58d696e7d74dcae1c7e285fb7caa2d3e0cef0150a125e546e12474d9d1a3184
|
7
|
+
data.tar.gz: 3678784b9161c7b0f59ff608950fc2eb17887281be9ffbb842f4bde178303b0ab347d2e1b82111fd43604d4a4419354277524abe55c20222370464ad5735c85b
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
Modern concurrency tools for Ruby. Inspired by
|
9
9
|
<a href="http://www.erlang.org/doc/reference_manual/processes.html">Erlang</a>,
|
10
10
|
<a href="http://clojure.org/concurrent_programming">Clojure</a>,
|
11
|
-
<a href="http://
|
11
|
+
<a href="http://akka.io/">Scala</a>,
|
12
12
|
<a href="http://www.haskell.org/haskellwiki/Applications_and_libraries/Concurrency_and_parallelism#Concurrent_Haskell">Haskell</a>,
|
13
13
|
<a href="http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx">F#</a>,
|
14
14
|
<a href="http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx">C#</a>,
|
data/lib/concurrent.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'concurrent/version'
|
2
|
+
|
2
3
|
require 'concurrent/configuration'
|
3
4
|
|
4
5
|
require 'concurrent/atomics'
|
5
|
-
require 'concurrent/actors'
|
6
6
|
require 'concurrent/channels'
|
7
7
|
require 'concurrent/collections'
|
8
8
|
require 'concurrent/executors'
|
9
9
|
require 'concurrent/utilities'
|
10
10
|
|
11
|
+
require 'concurrent/actress'
|
12
|
+
require 'concurrent/atomic'
|
11
13
|
require 'concurrent/agent'
|
12
14
|
require 'concurrent/async'
|
13
15
|
require 'concurrent/dataflow'
|
@@ -22,13 +24,10 @@ require 'concurrent/obligation'
|
|
22
24
|
require 'concurrent/observable'
|
23
25
|
require 'concurrent/options_parser'
|
24
26
|
require 'concurrent/promise'
|
25
|
-
require 'concurrent/runnable'
|
26
27
|
require 'concurrent/scheduled_task'
|
27
|
-
require 'concurrent/stoppable'
|
28
28
|
require 'concurrent/supervisor'
|
29
29
|
require 'concurrent/timer_task'
|
30
30
|
require 'concurrent/tvar'
|
31
|
-
require 'concurrent/actress'
|
32
31
|
|
33
32
|
# Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
|
34
33
|
# F#, C#, Java, and classic concurrency patterns.
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'concurrent/atomic_reference/concurrent_update_error'
|
2
|
+
require 'concurrent/atomic_reference/mutex_atomic'
|
3
|
+
|
4
|
+
begin
|
5
|
+
# force fallback impl with FORCE_ATOMIC_FALLBACK=1
|
6
|
+
if /[^0fF]/ =~ ENV['FORCE_ATOMIC_FALLBACK']
|
7
|
+
ruby_engine = 'mutex_atomic'
|
8
|
+
else
|
9
|
+
ruby_engine = defined?(RUBY_ENGINE)? RUBY_ENGINE : 'ruby'
|
10
|
+
end
|
11
|
+
|
12
|
+
require "concurrent/atomic_reference/#{ruby_engine}"
|
13
|
+
rescue LoadError
|
14
|
+
warn 'Compiled extensions not installed, pure Ruby Atomic will be used.'
|
15
|
+
end
|
16
|
+
|
17
|
+
if defined? Concurrent::JavaAtomic
|
18
|
+
|
19
|
+
class Concurrent::Atomic < Concurrent::JavaAtomic
|
20
|
+
end
|
21
|
+
|
22
|
+
elsif defined? Concurrent::CAtomic
|
23
|
+
|
24
|
+
class Concurrent::Atomic < Concurrent::CAtomic
|
25
|
+
end
|
26
|
+
|
27
|
+
elsif defined? Concurrent::RbxAtomic
|
28
|
+
|
29
|
+
class Concurrent::Atomic < Concurrent::RbxAtomic
|
30
|
+
end
|
31
|
+
|
32
|
+
else
|
33
|
+
|
34
|
+
class Concurrent::Atomic < Concurrent::MutexAtomic
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class Atomic < Concurrent::Atomic
|
39
|
+
|
40
|
+
ConcurrentUpdateError = Class.new(Concurrent::ConcurrentUpdateError)
|
41
|
+
|
42
|
+
def initialize(*args)
|
43
|
+
warn "[DEPRECATED] Please use Concurrent::Atomic instead."
|
44
|
+
super
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'concurrent/atomic_reference/concurrent_update_error'
|
2
|
+
|
3
|
+
module Concurrent
|
4
|
+
|
5
|
+
# Define update methods that delegate to @ref field
|
6
|
+
class Atomic
|
7
|
+
# Pass the current value to the given block, replacing it
|
8
|
+
# with the block's result. May retry if the value changes
|
9
|
+
# during the block's execution.
|
10
|
+
def update
|
11
|
+
true until @ref.compare_and_set(old_value = @ref.get, new_value = yield(old_value))
|
12
|
+
new_value
|
13
|
+
end
|
14
|
+
|
15
|
+
def try_update
|
16
|
+
old_value = @ref.get
|
17
|
+
new_value = yield old_value
|
18
|
+
unless @ref.compare_and_set(old_value, new_value)
|
19
|
+
if $VERBOSE
|
20
|
+
raise ConcurrentUpdateError, "Update failed"
|
21
|
+
else
|
22
|
+
raise ConcurrentUpdateError, "Update failed", ConcurrentUpdateError::CONC_UP_ERR_BACKTRACE
|
23
|
+
end
|
24
|
+
end
|
25
|
+
new_value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'concurrent/atomic_reference/concurrent_update_error'
|
2
|
+
|
3
|
+
module Concurrent
|
4
|
+
|
5
|
+
# Define update methods that use direct paths
|
6
|
+
module AtomicDirectUpdate
|
7
|
+
# Pass the current value to the given block, replacing it
|
8
|
+
# with the block's result. May retry if the value changes
|
9
|
+
# during the block's execution.
|
10
|
+
def update
|
11
|
+
true until compare_and_set(old_value = get, new_value = yield(old_value))
|
12
|
+
new_value
|
13
|
+
end
|
14
|
+
|
15
|
+
def try_update
|
16
|
+
old_value = get
|
17
|
+
new_value = yield old_value
|
18
|
+
unless compare_and_set(old_value, new_value)
|
19
|
+
if $VERBOSE
|
20
|
+
raise ConcurrentUpdateError, "Update failed"
|
21
|
+
else
|
22
|
+
raise ConcurrentUpdateError, "Update failed", ConcurrentUpdateError::CONC_UP_ERR_BACKTRACE
|
23
|
+
end
|
24
|
+
end
|
25
|
+
new_value
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'thread'
|
2
|
+
require 'concurrent/atomic_reference/direct_update'
|
3
|
+
require 'concurrent/atomic_reference/numeric_cas_wrapper'
|
4
|
+
|
5
|
+
module Concurrent
|
6
|
+
|
7
|
+
# Portable/generic (but not very memory or scheduling-efficient) fallback
|
8
|
+
class MutexAtomic #:nodoc: all
|
9
|
+
include Concurrent::AtomicDirectUpdate
|
10
|
+
include Concurrent::AtomicNumericCompareAndSetWrapper
|
11
|
+
|
12
|
+
def initialize(value = nil)
|
13
|
+
@mutex = Mutex.new
|
14
|
+
@value = value
|
15
|
+
end
|
16
|
+
|
17
|
+
def get
|
18
|
+
@mutex.synchronize { @value }
|
19
|
+
end
|
20
|
+
alias value get
|
21
|
+
|
22
|
+
def set(new_value)
|
23
|
+
@mutex.synchronize { @value = new_value }
|
24
|
+
end
|
25
|
+
alias value= set
|
26
|
+
|
27
|
+
def get_and_set(new_value)
|
28
|
+
@mutex.synchronize do
|
29
|
+
old_value = @value
|
30
|
+
@value = new_value
|
31
|
+
old_value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
alias swap get_and_set
|
35
|
+
|
36
|
+
def _compare_and_set(old_value, new_value)
|
37
|
+
return false unless @mutex.try_lock
|
38
|
+
begin
|
39
|
+
return false unless @value.equal? old_value
|
40
|
+
@value = new_value
|
41
|
+
ensure
|
42
|
+
@mutex.unlock
|
43
|
+
end
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Concurrent
|
2
|
+
|
3
|
+
module AtomicNumericCompareAndSetWrapper
|
4
|
+
#alias _compare_and_set compare_and_set
|
5
|
+
|
6
|
+
def compare_and_set(expected, new)
|
7
|
+
if expected.kind_of? Numeric
|
8
|
+
while true
|
9
|
+
old = get
|
10
|
+
|
11
|
+
return false unless old.kind_of? Numeric
|
12
|
+
|
13
|
+
return false unless old == expected
|
14
|
+
|
15
|
+
result = _compare_and_set(old, new)
|
16
|
+
return result if result
|
17
|
+
end
|
18
|
+
else
|
19
|
+
_compare_and_set(expected, new)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
alias compare_and_swap compare_and_set
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'concurrent/atomic_reference/direct_update'
|
2
|
+
require 'concurrent/atomic_reference/numeric_cas_wrapper'
|
3
|
+
|
4
|
+
module Concurrent
|
5
|
+
|
6
|
+
# extend Rubinius's version adding aliases and numeric logic
|
7
|
+
class RbxAtomic < Rubinius::AtomicReference
|
8
|
+
alias _compare_and_set compare_and_set
|
9
|
+
include Concurrent::AtomicDirectUpdate
|
10
|
+
include Concurrent::AtomicNumericCompareAndSetWrapper
|
11
|
+
|
12
|
+
alias value get
|
13
|
+
alias value= set
|
14
|
+
alias swap get_and_set
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
begin
|
2
|
+
require 'concurrent_ruby_ext'
|
3
|
+
rescue LoadError
|
4
|
+
# may be a Windows cross-compiled native gem
|
5
|
+
require "#{RUBY_VERSION[0..2]}/concurrent_ruby_ext"
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'concurrent/atomic_reference/direct_update'
|
9
|
+
require 'concurrent/atomic_reference/numeric_cas_wrapper'
|
10
|
+
|
11
|
+
module Concurrent
|
12
|
+
class CAtomic
|
13
|
+
include Concurrent::AtomicDirectUpdate
|
14
|
+
include Concurrent::AtomicNumericCompareAndSetWrapper
|
15
|
+
end
|
16
|
+
end
|
data/lib/concurrent/atomics.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'thread'
|
2
2
|
require 'concurrent/delay'
|
3
3
|
require 'concurrent/errors'
|
4
|
-
require 'concurrent/atomic
|
4
|
+
require 'concurrent/atomic'
|
5
5
|
require 'concurrent/executor/thread_pool_executor'
|
6
6
|
require 'concurrent/executor/timer_set'
|
7
7
|
require 'concurrent/utility/processor_count'
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'thread'
|
2
2
|
|
3
3
|
require 'concurrent/errors'
|
4
|
-
require 'concurrent/runnable'
|
5
4
|
|
6
5
|
module Concurrent
|
7
6
|
|
@@ -61,6 +60,7 @@ module Concurrent
|
|
61
60
|
alias_method :max_t, :max_time
|
62
61
|
|
63
62
|
def initialize(opts = {})
|
63
|
+
warn '[EXPERIMENTAL] Supervisor is being completely rewritten and will change soon.'
|
64
64
|
@restart_strategy = opts[:restart_strategy] || opts[:strategy] || :one_for_one
|
65
65
|
@monitor_interval = (opts[:monitor_interval] || DEFAULT_MONITOR_INTERVAL).to_f
|
66
66
|
@max_restart = (opts[:max_restart] || opts[:max_r] || DEFAULT_MAX_RESTART).to_i
|
@@ -4,9 +4,6 @@ require 'concurrent/atomic/atomic_boolean'
|
|
4
4
|
require 'concurrent/executor/executor'
|
5
5
|
require 'concurrent/executor/safe_task_executor'
|
6
6
|
|
7
|
-
# deprecated Updated to use `Executor` instead of `Runnable`
|
8
|
-
require 'concurrent/runnable'
|
9
|
-
|
10
7
|
module Concurrent
|
11
8
|
|
12
9
|
# A very common currency pattern is to run a thread that performs a task at regular
|
@@ -295,32 +292,6 @@ module Concurrent
|
|
295
292
|
end
|
296
293
|
end
|
297
294
|
|
298
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
299
|
-
def terminate(*args) deprecated(:terminate, :kill, *args); end
|
300
|
-
|
301
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
302
|
-
def stop(*args) deprecated(:stop, :shutdown, *args); end
|
303
|
-
|
304
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
305
|
-
def cancel(*args) deprecated(:cancel, :shutdown, *args); end
|
306
|
-
|
307
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
308
|
-
def run!(*args) deprecated(:run!, :execute); end
|
309
|
-
|
310
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
311
|
-
def self.run!(*args, &block)
|
312
|
-
warn "[DEPRECATED] `run!` is deprecated, please use `execute` instead."
|
313
|
-
Concurrent::Runnable::Context.new(TimerTask.new(*args, &block))
|
314
|
-
end
|
315
|
-
|
316
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
317
|
-
def run
|
318
|
-
raise Concurrent::Runnable::LifecycleError.new('already running') if @running.true?
|
319
|
-
self.execute
|
320
|
-
self.wait_for_termination
|
321
|
-
true
|
322
|
-
end
|
323
|
-
|
324
295
|
private :post, :<<
|
325
296
|
|
326
297
|
protected
|
@@ -366,12 +337,5 @@ module Concurrent
|
|
366
337
|
observers.notify_observers(Time.now, nil, Concurrent::TimeoutError.new)
|
367
338
|
end
|
368
339
|
end
|
369
|
-
|
370
|
-
# @deprecated Updated to use `Executor` instead of `Runnable`
|
371
|
-
# @!visibility private
|
372
|
-
def deprecated(old, new, *args)
|
373
|
-
warn "[DEPRECATED] `#{old}` is deprecated, please use `#{new}` instead."
|
374
|
-
self.send(new, *args)
|
375
|
-
end
|
376
340
|
end
|
377
341
|
end
|
data/lib/concurrent/version.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concurrent-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerry D'Antonio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.
|
@@ -23,9 +23,6 @@ files:
|
|
23
23
|
- LICENSE.txt
|
24
24
|
- README.md
|
25
25
|
- lib/concurrent.rb
|
26
|
-
- lib/concurrent/actor/actor.rb
|
27
|
-
- lib/concurrent/actor/postable.rb
|
28
|
-
- lib/concurrent/actors.rb
|
29
26
|
- lib/concurrent/actress.rb
|
30
27
|
- lib/concurrent/actress/ad_hoc.rb
|
31
28
|
- lib/concurrent/actress/context.rb
|
@@ -37,7 +34,7 @@ files:
|
|
37
34
|
- lib/concurrent/actress/type_check.rb
|
38
35
|
- lib/concurrent/agent.rb
|
39
36
|
- lib/concurrent/async.rb
|
40
|
-
- lib/concurrent/atomic
|
37
|
+
- lib/concurrent/atomic.rb
|
41
38
|
- lib/concurrent/atomic/atomic_boolean.rb
|
42
39
|
- lib/concurrent/atomic/atomic_fixnum.rb
|
43
40
|
- lib/concurrent/atomic/condition.rb
|
@@ -47,6 +44,14 @@ files:
|
|
47
44
|
- lib/concurrent/atomic/cyclic_barrier.rb
|
48
45
|
- lib/concurrent/atomic/event.rb
|
49
46
|
- lib/concurrent/atomic/thread_local_var.rb
|
47
|
+
- lib/concurrent/atomic_reference/concurrent_update_error.rb
|
48
|
+
- lib/concurrent/atomic_reference/delegated_update.rb
|
49
|
+
- lib/concurrent/atomic_reference/direct_update.rb
|
50
|
+
- lib/concurrent/atomic_reference/jruby.rb
|
51
|
+
- lib/concurrent/atomic_reference/mutex_atomic.rb
|
52
|
+
- lib/concurrent/atomic_reference/numeric_cas_wrapper.rb
|
53
|
+
- lib/concurrent/atomic_reference/rbx.rb
|
54
|
+
- lib/concurrent/atomic_reference/ruby.rb
|
50
55
|
- lib/concurrent/atomics.rb
|
51
56
|
- lib/concurrent/channel/buffered_channel.rb
|
52
57
|
- lib/concurrent/channel/channel.rb
|
@@ -91,9 +96,7 @@ files:
|
|
91
96
|
- lib/concurrent/observable.rb
|
92
97
|
- lib/concurrent/options_parser.rb
|
93
98
|
- lib/concurrent/promise.rb
|
94
|
-
- lib/concurrent/runnable.rb
|
95
99
|
- lib/concurrent/scheduled_task.rb
|
96
|
-
- lib/concurrent/stoppable.rb
|
97
100
|
- lib/concurrent/supervisor.rb
|
98
101
|
- lib/concurrent/timer_task.rb
|
99
102
|
- lib/concurrent/tvar.rb
|
@@ -103,74 +106,8 @@ files:
|
|
103
106
|
- lib/concurrent/utility/timer.rb
|
104
107
|
- lib/concurrent/version.rb
|
105
108
|
- lib/concurrent_ruby.rb
|
106
|
-
-
|
107
|
-
-
|
108
|
-
- spec/concurrent/actress_spec.rb
|
109
|
-
- spec/concurrent/agent_spec.rb
|
110
|
-
- spec/concurrent/async_spec.rb
|
111
|
-
- spec/concurrent/atomic/atomic_boolean_spec.rb
|
112
|
-
- spec/concurrent/atomic/atomic_fixnum_spec.rb
|
113
|
-
- spec/concurrent/atomic/atomic_spec.rb
|
114
|
-
- spec/concurrent/atomic/condition_spec.rb
|
115
|
-
- spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb
|
116
|
-
- spec/concurrent/atomic/copy_on_write_observer_set_spec.rb
|
117
|
-
- spec/concurrent/atomic/count_down_latch_spec.rb
|
118
|
-
- spec/concurrent/atomic/cyclic_barrier_spec.rb
|
119
|
-
- spec/concurrent/atomic/event_spec.rb
|
120
|
-
- spec/concurrent/atomic/observer_set_shared.rb
|
121
|
-
- spec/concurrent/atomic/thread_local_var_spec.rb
|
122
|
-
- spec/concurrent/channel/buffered_channel_spec.rb
|
123
|
-
- spec/concurrent/channel/channel_spec.rb
|
124
|
-
- spec/concurrent/channel/probe_spec.rb
|
125
|
-
- spec/concurrent/channel/unbuffered_channel_spec.rb
|
126
|
-
- spec/concurrent/collection/blocking_ring_buffer_spec.rb
|
127
|
-
- spec/concurrent/collection/priority_queue_spec.rb
|
128
|
-
- spec/concurrent/collection/ring_buffer_spec.rb
|
129
|
-
- spec/concurrent/configuration_spec.rb
|
130
|
-
- spec/concurrent/dataflow_spec.rb
|
131
|
-
- spec/concurrent/delay_spec.rb
|
132
|
-
- spec/concurrent/dereferenceable_shared.rb
|
133
|
-
- spec/concurrent/exchanger_spec.rb
|
134
|
-
- spec/concurrent/executor/cached_thread_pool_shared.rb
|
135
|
-
- spec/concurrent/executor/fixed_thread_pool_shared.rb
|
136
|
-
- spec/concurrent/executor/global_thread_pool_shared.rb
|
137
|
-
- spec/concurrent/executor/immediate_executor_spec.rb
|
138
|
-
- spec/concurrent/executor/java_cached_thread_pool_spec.rb
|
139
|
-
- spec/concurrent/executor/java_fixed_thread_pool_spec.rb
|
140
|
-
- spec/concurrent/executor/java_single_thread_executor_spec.rb
|
141
|
-
- spec/concurrent/executor/java_thread_pool_executor_spec.rb
|
142
|
-
- spec/concurrent/executor/per_thread_executor_spec.rb
|
143
|
-
- spec/concurrent/executor/ruby_cached_thread_pool_spec.rb
|
144
|
-
- spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb
|
145
|
-
- spec/concurrent/executor/ruby_single_thread_executor_spec.rb
|
146
|
-
- spec/concurrent/executor/ruby_thread_pool_executor_spec.rb
|
147
|
-
- spec/concurrent/executor/safe_task_executor_spec.rb
|
148
|
-
- spec/concurrent/executor/thread_pool_class_cast_spec.rb
|
149
|
-
- spec/concurrent/executor/thread_pool_executor_shared.rb
|
150
|
-
- spec/concurrent/executor/thread_pool_shared.rb
|
151
|
-
- spec/concurrent/executor/timer_set_spec.rb
|
152
|
-
- spec/concurrent/future_spec.rb
|
153
|
-
- spec/concurrent/ivar_spec.rb
|
154
|
-
- spec/concurrent/mvar_spec.rb
|
155
|
-
- spec/concurrent/obligation_shared.rb
|
156
|
-
- spec/concurrent/obligation_spec.rb
|
157
|
-
- spec/concurrent/observable_shared.rb
|
158
|
-
- spec/concurrent/observable_spec.rb
|
159
|
-
- spec/concurrent/options_parser_spec.rb
|
160
|
-
- spec/concurrent/promise_spec.rb
|
161
|
-
- spec/concurrent/runnable_shared.rb
|
162
|
-
- spec/concurrent/runnable_spec.rb
|
163
|
-
- spec/concurrent/scheduled_task_spec.rb
|
164
|
-
- spec/concurrent/stoppable_shared.rb
|
165
|
-
- spec/concurrent/supervisor_spec.rb
|
166
|
-
- spec/concurrent/timer_task_spec.rb
|
167
|
-
- spec/concurrent/tvar_spec.rb
|
168
|
-
- spec/concurrent/utility/processor_count_spec.rb
|
169
|
-
- spec/concurrent/utility/timeout_spec.rb
|
170
|
-
- spec/concurrent/utility/timer_spec.rb
|
171
|
-
- spec/spec_helper.rb
|
172
|
-
- spec/support/example_group_extensions.rb
|
173
|
-
- spec/support/less_than_or_equal_to_matcher.rb
|
109
|
+
- lib/concurrent_ruby_ext.so
|
110
|
+
- lib/extension_helper.rb
|
174
111
|
homepage: http://www.concurrent-ruby.com
|
175
112
|
licenses:
|
176
113
|
- MIT
|
@@ -186,9 +123,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
123
|
version: 1.9.3
|
187
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
125
|
requirements:
|
189
|
-
- - "
|
126
|
+
- - ">"
|
190
127
|
- !ruby/object:Gem::Version
|
191
|
-
version:
|
128
|
+
version: 1.3.1
|
192
129
|
requirements: []
|
193
130
|
rubyforge_project:
|
194
131
|
rubygems_version: 2.2.2
|
@@ -196,73 +133,4 @@ signing_key:
|
|
196
133
|
specification_version: 4
|
197
134
|
summary: Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
|
198
135
|
F#, C#, Java, and classic concurrency patterns.
|
199
|
-
test_files:
|
200
|
-
- spec/concurrent/actor/actor_spec.rb
|
201
|
-
- spec/concurrent/actor/postable_shared.rb
|
202
|
-
- spec/concurrent/actress_spec.rb
|
203
|
-
- spec/concurrent/agent_spec.rb
|
204
|
-
- spec/concurrent/async_spec.rb
|
205
|
-
- spec/concurrent/atomic/atomic_boolean_spec.rb
|
206
|
-
- spec/concurrent/atomic/atomic_fixnum_spec.rb
|
207
|
-
- spec/concurrent/atomic/atomic_spec.rb
|
208
|
-
- spec/concurrent/atomic/condition_spec.rb
|
209
|
-
- spec/concurrent/atomic/copy_on_notify_observer_set_spec.rb
|
210
|
-
- spec/concurrent/atomic/copy_on_write_observer_set_spec.rb
|
211
|
-
- spec/concurrent/atomic/count_down_latch_spec.rb
|
212
|
-
- spec/concurrent/atomic/cyclic_barrier_spec.rb
|
213
|
-
- spec/concurrent/atomic/event_spec.rb
|
214
|
-
- spec/concurrent/atomic/observer_set_shared.rb
|
215
|
-
- spec/concurrent/atomic/thread_local_var_spec.rb
|
216
|
-
- spec/concurrent/channel/buffered_channel_spec.rb
|
217
|
-
- spec/concurrent/channel/channel_spec.rb
|
218
|
-
- spec/concurrent/channel/probe_spec.rb
|
219
|
-
- spec/concurrent/channel/unbuffered_channel_spec.rb
|
220
|
-
- spec/concurrent/collection/blocking_ring_buffer_spec.rb
|
221
|
-
- spec/concurrent/collection/priority_queue_spec.rb
|
222
|
-
- spec/concurrent/collection/ring_buffer_spec.rb
|
223
|
-
- spec/concurrent/configuration_spec.rb
|
224
|
-
- spec/concurrent/dataflow_spec.rb
|
225
|
-
- spec/concurrent/delay_spec.rb
|
226
|
-
- spec/concurrent/dereferenceable_shared.rb
|
227
|
-
- spec/concurrent/exchanger_spec.rb
|
228
|
-
- spec/concurrent/executor/cached_thread_pool_shared.rb
|
229
|
-
- spec/concurrent/executor/fixed_thread_pool_shared.rb
|
230
|
-
- spec/concurrent/executor/global_thread_pool_shared.rb
|
231
|
-
- spec/concurrent/executor/immediate_executor_spec.rb
|
232
|
-
- spec/concurrent/executor/java_cached_thread_pool_spec.rb
|
233
|
-
- spec/concurrent/executor/java_fixed_thread_pool_spec.rb
|
234
|
-
- spec/concurrent/executor/java_single_thread_executor_spec.rb
|
235
|
-
- spec/concurrent/executor/java_thread_pool_executor_spec.rb
|
236
|
-
- spec/concurrent/executor/per_thread_executor_spec.rb
|
237
|
-
- spec/concurrent/executor/ruby_cached_thread_pool_spec.rb
|
238
|
-
- spec/concurrent/executor/ruby_fixed_thread_pool_spec.rb
|
239
|
-
- spec/concurrent/executor/ruby_single_thread_executor_spec.rb
|
240
|
-
- spec/concurrent/executor/ruby_thread_pool_executor_spec.rb
|
241
|
-
- spec/concurrent/executor/safe_task_executor_spec.rb
|
242
|
-
- spec/concurrent/executor/thread_pool_class_cast_spec.rb
|
243
|
-
- spec/concurrent/executor/thread_pool_executor_shared.rb
|
244
|
-
- spec/concurrent/executor/thread_pool_shared.rb
|
245
|
-
- spec/concurrent/executor/timer_set_spec.rb
|
246
|
-
- spec/concurrent/future_spec.rb
|
247
|
-
- spec/concurrent/ivar_spec.rb
|
248
|
-
- spec/concurrent/mvar_spec.rb
|
249
|
-
- spec/concurrent/obligation_shared.rb
|
250
|
-
- spec/concurrent/obligation_spec.rb
|
251
|
-
- spec/concurrent/observable_shared.rb
|
252
|
-
- spec/concurrent/observable_spec.rb
|
253
|
-
- spec/concurrent/options_parser_spec.rb
|
254
|
-
- spec/concurrent/promise_spec.rb
|
255
|
-
- spec/concurrent/runnable_shared.rb
|
256
|
-
- spec/concurrent/runnable_spec.rb
|
257
|
-
- spec/concurrent/scheduled_task_spec.rb
|
258
|
-
- spec/concurrent/stoppable_shared.rb
|
259
|
-
- spec/concurrent/supervisor_spec.rb
|
260
|
-
- spec/concurrent/timer_task_spec.rb
|
261
|
-
- spec/concurrent/tvar_spec.rb
|
262
|
-
- spec/concurrent/utility/processor_count_spec.rb
|
263
|
-
- spec/concurrent/utility/timeout_spec.rb
|
264
|
-
- spec/concurrent/utility/timer_spec.rb
|
265
|
-
- spec/spec_helper.rb
|
266
|
-
- spec/support/example_group_extensions.rb
|
267
|
-
- spec/support/less_than_or_equal_to_matcher.rb
|
268
|
-
has_rdoc:
|
136
|
+
test_files: []
|