File tree Expand file tree Collapse file tree 5 files changed +26
-21
lines changed Expand file tree Collapse file tree 5 files changed +26
-21
lines changed Original file line number Diff line number Diff line change 11require 'thread'
22
33module Concurrent
4- autoload :JRubyMapBackend , 'concurrent/thread_safe/jruby_map_backend'
5- autoload :MriMapBackend , 'concurrent/thread_safe/mri_map_backend'
6- autoload :NonConcurrentMapBackend , 'concurrent/thread_safe/non_concurrent_map_backend'
7- autoload :AtomicReferenceMapBackend , 'concurrent/thread_safe/atomic_reference_map_backend'
8- autoload :SynchronizedMapBackend , 'concurrent/thread_safe/synchronized_map_backend'
9-
104 # @!visibility private
115 module ThreadSafe
126
137 # @!visibility private
148 MapBackend = if defined? ( RUBY_ENGINE )
159 case RUBY_ENGINE
16- when 'jruby' ; JRubyMapBackend
17- when 'ruby' ; MriMapBackend
18- when 'rbx' ; AtomicReferenceMapBackend
10+ when 'jruby'
11+ JRubyMapBackend
12+ when 'ruby'
13+ require 'concurrent/thread_safe/mri_map_backend'
14+ MriMapBackend
15+ when 'rbx'
16+ require 'concurrent/thread_safe/atomic_reference_map_backend'
17+ AtomicReferenceMapBackend
1918 else
2019 warn 'Concurrent::Map: unsupported Ruby engine, using a fully synchronized Concurrent::Map implementation' if $VERBOSE
20+ require 'concurrent/thread_safe/synchronized_map_backend'
2121 SynchronizedMapBackend
2222 end
2323 else
@@ -31,7 +31,7 @@ module ThreadSafe
3131 # -- for instance, it does not necessarily retain ordering by insertion time as `Hash`
3232 # does. For most uses it should do fine though, and we recommend you consider
3333 # `Concurrent::Map` instead of `Concurrent::Hash` for your concurrency-safe hash needs.
34- #
34+ #
3535 # > require 'concurrent'
3636 # >
3737 # > map = Concurrent::Map.new
Original file line number Diff line number Diff line change 11require 'concurrent/utility/engine'
22require 'concurrent/thread_safe/synchronized_delegator'
3+ require 'concurrent/thread_safe/util'
4+ require 'concurrent/map'
35
46module Concurrent
5- autoload :Map , 'concurrent/map'
6- autoload :Util , 'concurrent/thread_safe/util'
77
88 # Various classes within allows for +nil+ values to be stored,
99 # so a special +NULL+ token is required to indicate the "nil-ness".
Original file line number Diff line number Diff line change 1+ require 'concurrent/thread_safe/non_concurrent_map_backend'
2+
13module Concurrent
24
35 # @!visibility private
46 module ThreadSafe
5-
7+
68 # @!visibility private
79 class MriMapBackend < NonConcurrentMapBackend
810
Original file line number Diff line number Diff line change 1+ require 'concurrent/thread_safe/non_concurrent_map_backend'
2+
13module Concurrent
24
35 # @!visibility private
Original file line number Diff line number Diff line change @@ -9,14 +9,15 @@ module Util
99 FIXNUM_BIT_SIZE = ( 0 . size * 8 ) - 2
1010 MAX_INT = ( 2 ** FIXNUM_BIT_SIZE ) - 1
1111 CPU_COUNT = 16 # is there a way to determine this?
12-
13- autoload :Tuple , 'concurrent/tuple'
14- autoload :Adder , 'concurrent/thread_safe/util/adder'
15- autoload :CheapLockable , 'concurrent/thread_safe/util/cheap_lockable'
16- autoload :PowerOfTwoTuple , 'concurrent/thread_safe/util/power_of_two_tuple'
17- autoload :Volatile , 'concurrent/thread_safe/util/volatile'
18- autoload :Striped64 , 'concurrent/thread_safe/util/striped64'
19- autoload :XorShiftRandom , 'concurrent/thread_safe/util/xor_shift_random'
2012 end
2113 end
2214end
15+
16+ require 'concurrent/tuple'
17+ require 'concurrent/thread_safe/util/xor_shift_random'
18+ require 'concurrent/thread_safe/util/volatile'
19+ require 'concurrent/thread_safe/util/striped64'
20+ require 'concurrent/thread_safe/util/adder'
21+ require 'concurrent/thread_safe/util/cheap_lockable'
22+ require 'concurrent/thread_safe/util/power_of_two_tuple'
23+
You can’t perform that action at this time.
0 commit comments