File tree Expand file tree Collapse file tree 5 files changed +25
-21
lines changed Expand file tree Collapse file tree 5 files changed +25
-21
lines changed Original file line number Diff line number Diff line change 1
1
require 'thread'
2
2
3
3
module 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
-
10
4
# @!visibility private
11
5
module ThreadSafe
12
6
13
7
# @!visibility private
14
8
MapBackend = if defined? ( RUBY_ENGINE )
15
9
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
19
18
else
20
19
warn 'Concurrent::Map: unsupported Ruby engine, using a fully synchronized Concurrent::Map implementation' if $VERBOSE
20
+ require 'concurrent/thread_safe/synchronized_map_backend'
21
21
SynchronizedMapBackend
22
22
end
23
23
else
@@ -31,7 +31,7 @@ module ThreadSafe
31
31
# -- for instance, it does not necessarily retain ordering by insertion time as `Hash`
32
32
# does. For most uses it should do fine though, and we recommend you consider
33
33
# `Concurrent::Map` instead of `Concurrent::Hash` for your concurrency-safe hash needs.
34
- #
34
+ #
35
35
# > require 'concurrent'
36
36
# >
37
37
# > map = Concurrent::Map.new
Original file line number Diff line number Diff line change 1
1
require 'concurrent/utility/engine'
2
2
require 'concurrent/thread_safe/synchronized_delegator'
3
+ require 'concurrent/map'
4
+ require 'concurrent/thread_safe/util'
3
5
4
6
module Concurrent
5
- autoload :Map , 'concurrent/map'
6
- autoload :Util , 'concurrent/thread_safe/util'
7
7
8
8
# Various classes within allows for +nil+ values to be stored,
9
9
# 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
+
1
3
module Concurrent
2
4
3
5
# @!visibility private
4
6
module ThreadSafe
5
-
7
+
6
8
# @!visibility private
7
9
class MriMapBackend < NonConcurrentMapBackend
8
10
Original file line number Diff line number Diff line change
1
+ require 'concurrent/thread_safe/non_concurrent_map_backend'
2
+
1
3
module Concurrent
2
4
3
5
# @!visibility private
Original file line number Diff line number Diff line change @@ -9,14 +9,14 @@ module Util
9
9
FIXNUM_BIT_SIZE = ( 0 . size * 8 ) - 2
10
10
MAX_INT = ( 2 ** FIXNUM_BIT_SIZE ) - 1
11
11
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'
20
12
end
21
13
end
22
14
end
15
+
16
+ require 'concurrent/tuple'
17
+ require 'concurrent/thread_safe/util/volatile'
18
+ require 'concurrent/thread_safe/util/striped64'
19
+ require 'concurrent/thread_safe/util/adder'
20
+ require 'concurrent/thread_safe/util/cheap_lockable'
21
+ require 'concurrent/thread_safe/util/power_of_two_tuple'
22
+
You can’t perform that action at this time.
0 commit comments