concurrent-ruby 1.0.5 → 1.1.6

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.
Files changed (161) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +115 -0
  3. data/Gemfile +42 -0
  4. data/{LICENSE.txt → LICENSE.md} +2 -0
  5. data/README.md +242 -105
  6. data/Rakefile +332 -0
  7. data/ext/concurrent-ruby/ConcurrentRubyService.java +17 -0
  8. data/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java +175 -0
  9. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java +248 -0
  10. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java +93 -0
  11. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java +113 -0
  12. data/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java +159 -0
  13. data/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java +307 -0
  14. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java +31 -0
  15. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java +3863 -0
  16. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java +203 -0
  17. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java +342 -0
  18. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java +3800 -0
  19. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java +204 -0
  20. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java +291 -0
  21. data/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java +199 -0
  22. data/lib/concurrent-ruby/concurrent-ruby.rb +1 -0
  23. data/lib/{concurrent.rb → concurrent-ruby/concurrent.rb} +24 -20
  24. data/lib/{concurrent → concurrent-ruby/concurrent}/agent.rb +7 -7
  25. data/lib/concurrent-ruby/concurrent/array.rb +66 -0
  26. data/lib/{concurrent → concurrent-ruby/concurrent}/async.rb +18 -4
  27. data/lib/{concurrent → concurrent-ruby/concurrent}/atom.rb +10 -10
  28. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/abstract_thread_local_var.rb +0 -0
  29. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/atomic_boolean.rb +26 -22
  30. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/atomic_fixnum.rb +27 -23
  31. data/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb +164 -0
  32. data/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb +204 -0
  33. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/count_down_latch.rb +7 -7
  34. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/cyclic_barrier.rb +1 -1
  35. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/event.rb +1 -1
  36. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/java_count_down_latch.rb +9 -6
  37. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/java_thread_local_var.rb +0 -0
  38. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/mutex_atomic_boolean.rb +2 -0
  39. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/mutex_atomic_fixnum.rb +0 -0
  40. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/mutex_count_down_latch.rb +1 -0
  41. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/mutex_semaphore.rb +0 -0
  42. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/read_write_lock.rb +2 -1
  43. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/reentrant_read_write_lock.rb +3 -1
  44. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/ruby_thread_local_var.rb +43 -33
  45. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/semaphore.rb +8 -8
  46. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic/thread_local_var.rb +8 -8
  47. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic_reference/mutex_atomic.rb +3 -8
  48. data/lib/{concurrent → concurrent-ruby/concurrent}/atomic_reference/numeric_cas_wrapper.rb +1 -1
  49. data/lib/concurrent-ruby/concurrent/atomics.rb +10 -0
  50. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/copy_on_notify_observer_set.rb +0 -0
  51. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/copy_on_write_observer_set.rb +0 -0
  52. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/java_non_concurrent_priority_queue.rb +0 -0
  53. data/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb +158 -0
  54. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/map/atomic_reference_map_backend.rb +3 -3
  55. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/map/mri_map_backend.rb +0 -0
  56. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/map/non_concurrent_map_backend.rb +1 -2
  57. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/map/synchronized_map_backend.rb +0 -0
  58. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/non_concurrent_priority_queue.rb +30 -30
  59. data/lib/{concurrent → concurrent-ruby/concurrent}/collection/ruby_non_concurrent_priority_queue.rb +0 -0
  60. data/lib/{concurrent → concurrent-ruby/concurrent}/concern/deprecation.rb +0 -0
  61. data/lib/{concurrent → concurrent-ruby/concurrent}/concern/dereferenceable.rb +3 -3
  62. data/lib/{concurrent → concurrent-ruby/concurrent}/concern/logging.rb +6 -1
  63. data/lib/{concurrent → concurrent-ruby/concurrent}/concern/obligation.rb +0 -0
  64. data/lib/{concurrent → concurrent-ruby/concurrent}/concern/observable.rb +7 -7
  65. data/lib/concurrent-ruby/concurrent/concurrent_ruby.jar +0 -0
  66. data/lib/{concurrent → concurrent-ruby/concurrent}/configuration.rb +15 -15
  67. data/lib/{concurrent → concurrent-ruby/concurrent}/constants.rb +1 -1
  68. data/lib/{concurrent → concurrent-ruby/concurrent}/dataflow.rb +2 -1
  69. data/lib/{concurrent → concurrent-ruby/concurrent}/delay.rb +9 -7
  70. data/lib/{concurrent → concurrent-ruby/concurrent}/errors.rb +0 -0
  71. data/lib/{concurrent → concurrent-ruby/concurrent}/exchanger.rb +21 -25
  72. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/abstract_executor_service.rb +19 -25
  73. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/cached_thread_pool.rb +5 -5
  74. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/executor_service.rb +17 -17
  75. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/fixed_thread_pool.rb +27 -30
  76. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/immediate_executor.rb +0 -0
  77. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/indirect_immediate_executor.rb +0 -0
  78. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/java_executor_service.rb +19 -16
  79. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/java_single_thread_executor.rb +4 -3
  80. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/java_thread_pool_executor.rb +12 -8
  81. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/ruby_executor_service.rb +0 -2
  82. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/ruby_single_thread_executor.rb +0 -1
  83. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/ruby_thread_pool_executor.rb +9 -4
  84. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/safe_task_executor.rb +0 -0
  85. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/serial_executor_service.rb +0 -0
  86. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/serialized_execution.rb +0 -0
  87. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/serialized_execution_delegator.rb +0 -0
  88. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/simple_executor_service.rb +1 -1
  89. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/single_thread_executor.rb +3 -2
  90. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/thread_pool_executor.rb +6 -6
  91. data/lib/{concurrent → concurrent-ruby/concurrent}/executor/timer_set.rb +14 -17
  92. data/lib/{concurrent → concurrent-ruby/concurrent}/executors.rb +0 -0
  93. data/lib/{concurrent → concurrent-ruby/concurrent}/future.rb +4 -1
  94. data/lib/concurrent-ruby/concurrent/hash.rb +59 -0
  95. data/lib/{concurrent → concurrent-ruby/concurrent}/immutable_struct.rb +8 -0
  96. data/lib/{concurrent → concurrent-ruby/concurrent}/ivar.rb +5 -6
  97. data/lib/concurrent-ruby/concurrent/map.rb +337 -0
  98. data/lib/{concurrent → concurrent-ruby/concurrent}/maybe.rb +1 -1
  99. data/lib/{concurrent → concurrent-ruby/concurrent}/mutable_struct.rb +25 -14
  100. data/lib/{concurrent → concurrent-ruby/concurrent}/mvar.rb +2 -2
  101. data/lib/{concurrent → concurrent-ruby/concurrent}/options.rb +0 -0
  102. data/lib/{concurrent → concurrent-ruby/concurrent}/promise.rb +53 -21
  103. data/lib/concurrent-ruby/concurrent/promises.rb +2167 -0
  104. data/lib/concurrent-ruby/concurrent/re_include.rb +58 -0
  105. data/lib/{concurrent → concurrent-ruby/concurrent}/scheduled_task.rb +0 -0
  106. data/lib/concurrent-ruby/concurrent/set.rb +66 -0
  107. data/lib/{concurrent → concurrent-ruby/concurrent}/settable_struct.rb +11 -0
  108. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization.rb +4 -5
  109. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/abstract_lockable_object.rb +5 -5
  110. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/abstract_object.rb +0 -0
  111. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/abstract_struct.rb +18 -4
  112. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/condition.rb +2 -0
  113. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/jruby_lockable_object.rb +0 -0
  114. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/jruby_object.rb +1 -0
  115. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/lock.rb +2 -0
  116. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/lockable_object.rb +6 -6
  117. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/mri_object.rb +1 -0
  118. data/lib/{concurrent/synchronization/mri_lockable_object.rb → concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb} +19 -14
  119. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/object.rb +53 -23
  120. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/rbx_lockable_object.rb +0 -0
  121. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/rbx_object.rb +1 -0
  122. data/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb +47 -0
  123. data/lib/{concurrent → concurrent-ruby/concurrent}/synchronization/volatile.rb +11 -9
  124. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/synchronized_delegator.rb +0 -0
  125. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util.rb +0 -0
  126. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/adder.rb +0 -0
  127. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/cheap_lockable.rb +0 -0
  128. data/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb +63 -0
  129. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/power_of_two_tuple.rb +0 -0
  130. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/striped64.rb +9 -4
  131. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/volatile.rb +0 -0
  132. data/lib/{concurrent → concurrent-ruby/concurrent}/thread_safe/util/xor_shift_random.rb +0 -0
  133. data/lib/{concurrent → concurrent-ruby/concurrent}/timer_task.rb +5 -2
  134. data/lib/{concurrent → concurrent-ruby/concurrent}/tuple.rb +1 -1
  135. data/lib/{concurrent → concurrent-ruby/concurrent}/tvar.rb +2 -2
  136. data/lib/{concurrent → concurrent-ruby/concurrent}/utility/engine.rb +4 -4
  137. data/lib/{concurrent → concurrent-ruby/concurrent}/utility/monotonic_time.rb +3 -3
  138. data/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb +79 -0
  139. data/lib/{concurrent → concurrent-ruby/concurrent}/utility/native_integer.rb +0 -0
  140. data/lib/{concurrent → concurrent-ruby/concurrent}/utility/processor_counter.rb +5 -2
  141. data/lib/concurrent-ruby/concurrent/version.rb +3 -0
  142. metadata +146 -131
  143. data/lib/concurrent/array.rb +0 -39
  144. data/lib/concurrent/atomic/atomic_reference.rb +0 -51
  145. data/lib/concurrent/atomic_reference/concurrent_update_error.rb +0 -8
  146. data/lib/concurrent/atomic_reference/direct_update.rb +0 -81
  147. data/lib/concurrent/atomic_reference/jruby+truffle.rb +0 -2
  148. data/lib/concurrent/atomic_reference/jruby.rb +0 -16
  149. data/lib/concurrent/atomic_reference/rbx.rb +0 -22
  150. data/lib/concurrent/atomic_reference/ruby.rb +0 -32
  151. data/lib/concurrent/atomics.rb +0 -53
  152. data/lib/concurrent/edge.rb +0 -26
  153. data/lib/concurrent/hash.rb +0 -36
  154. data/lib/concurrent/lazy_register.rb +0 -81
  155. data/lib/concurrent/map.rb +0 -240
  156. data/lib/concurrent/synchronization/truffle_lockable_object.rb +0 -9
  157. data/lib/concurrent/synchronization/truffle_object.rb +0 -31
  158. data/lib/concurrent/thread_safe/util/array_hash_rbx.rb +0 -30
  159. data/lib/concurrent/utility/at_exit.rb +0 -97
  160. data/lib/concurrent/utility/native_extension_loader.rb +0 -73
  161. data/lib/concurrent/version.rb +0 -4
@@ -0,0 +1,79 @@
1
+ require 'concurrent/utility/engine'
2
+
3
+ module Concurrent
4
+
5
+ module Utility
6
+
7
+ # @!visibility private
8
+ module NativeExtensionLoader
9
+
10
+ def allow_c_extensions?
11
+ Concurrent.on_cruby?
12
+ end
13
+
14
+ def c_extensions_loaded?
15
+ defined?(@c_extensions_loaded) && @c_extensions_loaded
16
+ end
17
+
18
+ def java_extensions_loaded?
19
+ defined?(@java_extensions_loaded) && @java_extensions_loaded
20
+ end
21
+
22
+ def load_native_extensions
23
+ unless defined? Synchronization::AbstractObject
24
+ raise 'native_extension_loader loaded before Synchronization::AbstractObject'
25
+ end
26
+
27
+ if Concurrent.on_cruby? && !c_extensions_loaded?
28
+ ['concurrent/concurrent_ruby_ext',
29
+ "concurrent/#{RUBY_VERSION[0..2]}/concurrent_ruby_ext"
30
+ ].each { |p| try_load_c_extension p }
31
+ end
32
+
33
+ if Concurrent.on_jruby? && !java_extensions_loaded?
34
+ begin
35
+ require 'concurrent/concurrent_ruby.jar'
36
+ set_java_extensions_loaded
37
+ rescue LoadError => e
38
+ raise e, "Java extensions are required for JRuby.\n" + e.message, e.backtrace
39
+ end
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def load_error_path(error)
46
+ if error.respond_to? :path
47
+ error.path
48
+ else
49
+ error.message.split(' -- ').last
50
+ end
51
+ end
52
+
53
+ def set_c_extensions_loaded
54
+ @c_extensions_loaded = true
55
+ end
56
+
57
+ def set_java_extensions_loaded
58
+ @java_extensions_loaded = true
59
+ end
60
+
61
+ def try_load_c_extension(path)
62
+ require path
63
+ set_c_extensions_loaded
64
+ rescue LoadError => e
65
+ if load_error_path(e) == path
66
+ # move on with pure-Ruby implementations
67
+ # TODO (pitr-ch 12-Jul-2018): warning on verbose?
68
+ else
69
+ raise e
70
+ end
71
+ end
72
+
73
+ end
74
+ end
75
+
76
+ # @!visibility private
77
+ extend Utility::NativeExtensionLoader
78
+ end
79
+
@@ -1,3 +1,4 @@
1
+ require 'etc'
1
2
  require 'rbconfig'
2
3
  require 'concurrent/delay'
3
4
 
@@ -22,6 +23,8 @@ module Concurrent
22
23
  # occasionally poll this property." Subsequently the result will NOT be
23
24
  # memoized under JRuby.
24
25
  #
26
+ # Ruby's Etc.nprocessors will be used if available (MRI 2.2+).
27
+ #
25
28
  # On Windows the Win32 API will be queried for the
26
29
  # `NumberOfLogicalProcessors from Win32_Processor`. This will return the
27
30
  # total number "logical processors for the current instance of the
@@ -76,8 +79,8 @@ module Concurrent
76
79
  def compute_processor_count
77
80
  if Concurrent.on_jruby?
78
81
  java.lang.Runtime.getRuntime.availableProcessors
79
- elsif Concurrent.on_truffle?
80
- Truffle::Primitive.logical_processors
82
+ elsif Etc.respond_to?(:nprocessors) && (nprocessor = Etc.nprocessors rescue nil)
83
+ nprocessor
81
84
  else
82
85
  os_name = RbConfig::CONFIG["target_os"]
83
86
  if os_name =~ /mingw|mswin/
@@ -0,0 +1,3 @@
1
+ module Concurrent
2
+ VERSION = '1.1.6'
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry D'Antonio
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-26 00:00:00.000000000 Z
13
+ date: 2020-02-10 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: |
16
16
  Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.
@@ -20,143 +20,159 @@ executables: []
20
20
  extensions: []
21
21
  extra_rdoc_files:
22
22
  - README.md
23
- - LICENSE.txt
23
+ - LICENSE.md
24
24
  - CHANGELOG.md
25
25
  files:
26
26
  - CHANGELOG.md
27
- - LICENSE.txt
27
+ - Gemfile
28
+ - LICENSE.md
28
29
  - README.md
29
- - lib/concurrent.rb
30
- - lib/concurrent/agent.rb
31
- - lib/concurrent/array.rb
32
- - lib/concurrent/async.rb
33
- - lib/concurrent/atom.rb
34
- - lib/concurrent/atomic/abstract_thread_local_var.rb
35
- - lib/concurrent/atomic/atomic_boolean.rb
36
- - lib/concurrent/atomic/atomic_fixnum.rb
37
- - lib/concurrent/atomic/atomic_reference.rb
38
- - lib/concurrent/atomic/count_down_latch.rb
39
- - lib/concurrent/atomic/cyclic_barrier.rb
40
- - lib/concurrent/atomic/event.rb
41
- - lib/concurrent/atomic/java_count_down_latch.rb
42
- - lib/concurrent/atomic/java_thread_local_var.rb
43
- - lib/concurrent/atomic/mutex_atomic_boolean.rb
44
- - lib/concurrent/atomic/mutex_atomic_fixnum.rb
45
- - lib/concurrent/atomic/mutex_count_down_latch.rb
46
- - lib/concurrent/atomic/mutex_semaphore.rb
47
- - lib/concurrent/atomic/read_write_lock.rb
48
- - lib/concurrent/atomic/reentrant_read_write_lock.rb
49
- - lib/concurrent/atomic/ruby_thread_local_var.rb
50
- - lib/concurrent/atomic/semaphore.rb
51
- - lib/concurrent/atomic/thread_local_var.rb
52
- - lib/concurrent/atomic_reference/concurrent_update_error.rb
53
- - lib/concurrent/atomic_reference/direct_update.rb
54
- - lib/concurrent/atomic_reference/jruby+truffle.rb
55
- - lib/concurrent/atomic_reference/jruby.rb
56
- - lib/concurrent/atomic_reference/mutex_atomic.rb
57
- - lib/concurrent/atomic_reference/numeric_cas_wrapper.rb
58
- - lib/concurrent/atomic_reference/rbx.rb
59
- - lib/concurrent/atomic_reference/ruby.rb
60
- - lib/concurrent/atomics.rb
61
- - lib/concurrent/collection/copy_on_notify_observer_set.rb
62
- - lib/concurrent/collection/copy_on_write_observer_set.rb
63
- - lib/concurrent/collection/java_non_concurrent_priority_queue.rb
64
- - lib/concurrent/collection/map/atomic_reference_map_backend.rb
65
- - lib/concurrent/collection/map/mri_map_backend.rb
66
- - lib/concurrent/collection/map/non_concurrent_map_backend.rb
67
- - lib/concurrent/collection/map/synchronized_map_backend.rb
68
- - lib/concurrent/collection/non_concurrent_priority_queue.rb
69
- - lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb
70
- - lib/concurrent/concern/deprecation.rb
71
- - lib/concurrent/concern/dereferenceable.rb
72
- - lib/concurrent/concern/logging.rb
73
- - lib/concurrent/concern/obligation.rb
74
- - lib/concurrent/concern/observable.rb
75
- - lib/concurrent/configuration.rb
76
- - lib/concurrent/constants.rb
77
- - lib/concurrent/dataflow.rb
78
- - lib/concurrent/delay.rb
79
- - lib/concurrent/edge.rb
80
- - lib/concurrent/errors.rb
81
- - lib/concurrent/exchanger.rb
82
- - lib/concurrent/executor/abstract_executor_service.rb
83
- - lib/concurrent/executor/cached_thread_pool.rb
84
- - lib/concurrent/executor/executor_service.rb
85
- - lib/concurrent/executor/fixed_thread_pool.rb
86
- - lib/concurrent/executor/immediate_executor.rb
87
- - lib/concurrent/executor/indirect_immediate_executor.rb
88
- - lib/concurrent/executor/java_executor_service.rb
89
- - lib/concurrent/executor/java_single_thread_executor.rb
90
- - lib/concurrent/executor/java_thread_pool_executor.rb
91
- - lib/concurrent/executor/ruby_executor_service.rb
92
- - lib/concurrent/executor/ruby_single_thread_executor.rb
93
- - lib/concurrent/executor/ruby_thread_pool_executor.rb
94
- - lib/concurrent/executor/safe_task_executor.rb
95
- - lib/concurrent/executor/serial_executor_service.rb
96
- - lib/concurrent/executor/serialized_execution.rb
97
- - lib/concurrent/executor/serialized_execution_delegator.rb
98
- - lib/concurrent/executor/simple_executor_service.rb
99
- - lib/concurrent/executor/single_thread_executor.rb
100
- - lib/concurrent/executor/thread_pool_executor.rb
101
- - lib/concurrent/executor/timer_set.rb
102
- - lib/concurrent/executors.rb
103
- - lib/concurrent/future.rb
104
- - lib/concurrent/hash.rb
105
- - lib/concurrent/immutable_struct.rb
106
- - lib/concurrent/ivar.rb
107
- - lib/concurrent/lazy_register.rb
108
- - lib/concurrent/map.rb
109
- - lib/concurrent/maybe.rb
110
- - lib/concurrent/mutable_struct.rb
111
- - lib/concurrent/mvar.rb
112
- - lib/concurrent/options.rb
113
- - lib/concurrent/promise.rb
114
- - lib/concurrent/scheduled_task.rb
115
- - lib/concurrent/settable_struct.rb
116
- - lib/concurrent/synchronization.rb
117
- - lib/concurrent/synchronization/abstract_lockable_object.rb
118
- - lib/concurrent/synchronization/abstract_object.rb
119
- - lib/concurrent/synchronization/abstract_struct.rb
120
- - lib/concurrent/synchronization/condition.rb
121
- - lib/concurrent/synchronization/jruby_lockable_object.rb
122
- - lib/concurrent/synchronization/jruby_object.rb
123
- - lib/concurrent/synchronization/lock.rb
124
- - lib/concurrent/synchronization/lockable_object.rb
125
- - lib/concurrent/synchronization/mri_lockable_object.rb
126
- - lib/concurrent/synchronization/mri_object.rb
127
- - lib/concurrent/synchronization/object.rb
128
- - lib/concurrent/synchronization/rbx_lockable_object.rb
129
- - lib/concurrent/synchronization/rbx_object.rb
130
- - lib/concurrent/synchronization/truffle_lockable_object.rb
131
- - lib/concurrent/synchronization/truffle_object.rb
132
- - lib/concurrent/synchronization/volatile.rb
133
- - lib/concurrent/thread_safe/synchronized_delegator.rb
134
- - lib/concurrent/thread_safe/util.rb
135
- - lib/concurrent/thread_safe/util/adder.rb
136
- - lib/concurrent/thread_safe/util/array_hash_rbx.rb
137
- - lib/concurrent/thread_safe/util/cheap_lockable.rb
138
- - lib/concurrent/thread_safe/util/power_of_two_tuple.rb
139
- - lib/concurrent/thread_safe/util/striped64.rb
140
- - lib/concurrent/thread_safe/util/volatile.rb
141
- - lib/concurrent/thread_safe/util/xor_shift_random.rb
142
- - lib/concurrent/timer_task.rb
143
- - lib/concurrent/tuple.rb
144
- - lib/concurrent/tvar.rb
145
- - lib/concurrent/utility/at_exit.rb
146
- - lib/concurrent/utility/engine.rb
147
- - lib/concurrent/utility/monotonic_time.rb
148
- - lib/concurrent/utility/native_extension_loader.rb
149
- - lib/concurrent/utility/native_integer.rb
150
- - lib/concurrent/utility/processor_counter.rb
151
- - lib/concurrent/version.rb
30
+ - Rakefile
31
+ - ext/concurrent-ruby/ConcurrentRubyService.java
32
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java
33
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java
34
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java
35
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java
36
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java
37
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java
38
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java
39
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java
40
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java
41
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java
42
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java
43
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java
44
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java
45
+ - ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java
46
+ - lib/concurrent-ruby/concurrent-ruby.rb
47
+ - lib/concurrent-ruby/concurrent.rb
48
+ - lib/concurrent-ruby/concurrent/agent.rb
49
+ - lib/concurrent-ruby/concurrent/array.rb
50
+ - lib/concurrent-ruby/concurrent/async.rb
51
+ - lib/concurrent-ruby/concurrent/atom.rb
52
+ - lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb
53
+ - lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb
54
+ - lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb
55
+ - lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb
56
+ - lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb
57
+ - lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb
58
+ - lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb
59
+ - lib/concurrent-ruby/concurrent/atomic/event.rb
60
+ - lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb
61
+ - lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb
62
+ - lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb
63
+ - lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb
64
+ - lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb
65
+ - lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb
66
+ - lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb
67
+ - lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb
68
+ - lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb
69
+ - lib/concurrent-ruby/concurrent/atomic/semaphore.rb
70
+ - lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb
71
+ - lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb
72
+ - lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb
73
+ - lib/concurrent-ruby/concurrent/atomics.rb
74
+ - lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb
75
+ - lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb
76
+ - lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb
77
+ - lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb
78
+ - lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb
79
+ - lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb
80
+ - lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb
81
+ - lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb
82
+ - lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb
83
+ - lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb
84
+ - lib/concurrent-ruby/concurrent/concern/deprecation.rb
85
+ - lib/concurrent-ruby/concurrent/concern/dereferenceable.rb
86
+ - lib/concurrent-ruby/concurrent/concern/logging.rb
87
+ - lib/concurrent-ruby/concurrent/concern/obligation.rb
88
+ - lib/concurrent-ruby/concurrent/concern/observable.rb
89
+ - lib/concurrent-ruby/concurrent/concurrent_ruby.jar
90
+ - lib/concurrent-ruby/concurrent/configuration.rb
91
+ - lib/concurrent-ruby/concurrent/constants.rb
92
+ - lib/concurrent-ruby/concurrent/dataflow.rb
93
+ - lib/concurrent-ruby/concurrent/delay.rb
94
+ - lib/concurrent-ruby/concurrent/errors.rb
95
+ - lib/concurrent-ruby/concurrent/exchanger.rb
96
+ - lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb
97
+ - lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb
98
+ - lib/concurrent-ruby/concurrent/executor/executor_service.rb
99
+ - lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
100
+ - lib/concurrent-ruby/concurrent/executor/immediate_executor.rb
101
+ - lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb
102
+ - lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
103
+ - lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb
104
+ - lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
105
+ - lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb
106
+ - lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
107
+ - lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
108
+ - lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb
109
+ - lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb
110
+ - lib/concurrent-ruby/concurrent/executor/serialized_execution.rb
111
+ - lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb
112
+ - lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb
113
+ - lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb
114
+ - lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb
115
+ - lib/concurrent-ruby/concurrent/executor/timer_set.rb
116
+ - lib/concurrent-ruby/concurrent/executors.rb
117
+ - lib/concurrent-ruby/concurrent/future.rb
118
+ - lib/concurrent-ruby/concurrent/hash.rb
119
+ - lib/concurrent-ruby/concurrent/immutable_struct.rb
120
+ - lib/concurrent-ruby/concurrent/ivar.rb
121
+ - lib/concurrent-ruby/concurrent/map.rb
122
+ - lib/concurrent-ruby/concurrent/maybe.rb
123
+ - lib/concurrent-ruby/concurrent/mutable_struct.rb
124
+ - lib/concurrent-ruby/concurrent/mvar.rb
125
+ - lib/concurrent-ruby/concurrent/options.rb
126
+ - lib/concurrent-ruby/concurrent/promise.rb
127
+ - lib/concurrent-ruby/concurrent/promises.rb
128
+ - lib/concurrent-ruby/concurrent/re_include.rb
129
+ - lib/concurrent-ruby/concurrent/scheduled_task.rb
130
+ - lib/concurrent-ruby/concurrent/set.rb
131
+ - lib/concurrent-ruby/concurrent/settable_struct.rb
132
+ - lib/concurrent-ruby/concurrent/synchronization.rb
133
+ - lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb
134
+ - lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb
135
+ - lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb
136
+ - lib/concurrent-ruby/concurrent/synchronization/condition.rb
137
+ - lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb
138
+ - lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb
139
+ - lib/concurrent-ruby/concurrent/synchronization/lock.rb
140
+ - lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb
141
+ - lib/concurrent-ruby/concurrent/synchronization/mri_object.rb
142
+ - lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb
143
+ - lib/concurrent-ruby/concurrent/synchronization/object.rb
144
+ - lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb
145
+ - lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb
146
+ - lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb
147
+ - lib/concurrent-ruby/concurrent/synchronization/volatile.rb
148
+ - lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb
149
+ - lib/concurrent-ruby/concurrent/thread_safe/util.rb
150
+ - lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb
151
+ - lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb
152
+ - lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb
153
+ - lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb
154
+ - lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb
155
+ - lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb
156
+ - lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb
157
+ - lib/concurrent-ruby/concurrent/timer_task.rb
158
+ - lib/concurrent-ruby/concurrent/tuple.rb
159
+ - lib/concurrent-ruby/concurrent/tvar.rb
160
+ - lib/concurrent-ruby/concurrent/utility/engine.rb
161
+ - lib/concurrent-ruby/concurrent/utility/monotonic_time.rb
162
+ - lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb
163
+ - lib/concurrent-ruby/concurrent/utility/native_integer.rb
164
+ - lib/concurrent-ruby/concurrent/utility/processor_counter.rb
165
+ - lib/concurrent-ruby/concurrent/version.rb
152
166
  homepage: http://www.concurrent-ruby.com
153
167
  licenses:
154
168
  - MIT
155
- metadata: {}
169
+ metadata:
170
+ source_code_uri: https://github.com/ruby-concurrency/concurrent-ruby
171
+ changelog_uri: https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md
156
172
  post_install_message:
157
173
  rdoc_options: []
158
174
  require_paths:
159
- - lib
175
+ - lib/concurrent-ruby
160
176
  required_ruby_version: !ruby/object:Gem::Requirement
161
177
  requirements:
162
178
  - - ">="
@@ -169,10 +185,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
185
  version: '0'
170
186
  requirements: []
171
187
  rubyforge_project:
172
- rubygems_version: 2.6.8
188
+ rubygems_version: 2.7.9
173
189
  signing_key:
174
190
  specification_version: 4
175
191
  summary: Modern concurrency tools for Ruby. Inspired by Erlang, Clojure, Scala, Haskell,
176
192
  F#, C#, Java, and classic concurrency patterns.
177
193
  test_files: []
178
- has_rdoc:
@@ -1,39 +0,0 @@
1
- require 'concurrent/utility/engine'
2
- require 'concurrent/thread_safe/util'
3
-
4
- module Concurrent
5
- if Concurrent.on_cruby?
6
-
7
- # Because MRI never runs code in parallel, the existing
8
- # non-thread-safe structures should usually work fine.
9
-
10
- # @!macro [attach] concurrent_array
11
- #
12
- # A thread-safe subclass of Array. This version locks against the object
13
- # itself for every method call, ensuring only one thread can be reading
14
- # or writing at a time. This includes iteration methods like `#each`.
15
- #
16
- # @see http://ruby-doc.org/core-2.2.0/Array.html Ruby standard library `Array`
17
- class Array < ::Array;
18
- end
19
-
20
- elsif Concurrent.on_jruby?
21
- require 'jruby/synchronized'
22
-
23
- # @!macro concurrent_array
24
- class Array < ::Array
25
- include JRuby::Synchronized
26
- end
27
-
28
- elsif Concurrent.on_rbx? || Concurrent.on_truffle?
29
- require 'monitor'
30
- require 'concurrent/thread_safe/util/array_hash_rbx'
31
-
32
- # @!macro concurrent_array
33
- class Array < ::Array
34
- end
35
-
36
- ThreadSafe::Util.make_synchronized_on_rbx Array
37
- end
38
- end
39
-