concurrent-ruby 0.6.1 → 0.7.0.rc0
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 +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: []
|