Skip to content

Commit 88e252d

Browse files
committed
Safe configuration access
1 parent d1bab4c commit 88e252d

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

lib/concurrent/configuration.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require 'thread'
22
require 'concurrent/delay'
33
require 'concurrent/errors'
4+
require 'concurrent/atomic/atomic'
45
require 'concurrent/executor/thread_pool_executor'
56
require 'concurrent/executor/timer_set'
67
require 'concurrent/utility/processor_count'
@@ -111,8 +112,12 @@ def new_operation_pool
111112
end
112113

113114
# create the default configuration on load
114-
@configuration = Configuration.new
115-
singleton_class.send :attr_reader, :configuration
115+
@configuration = Atomic.new Configuration.new
116+
117+
# @return [Configuration]
118+
def self.configuration
119+
@configuration.value
120+
end
116121

117122
# Perform gem-level configuration.
118123
#

spec/support/example_group_extensions.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def rbx?
2424

2525
def reset_gem_configuration
2626
return if @do_not_reset
27-
Concurrent.instance_variable_set(:@configuration, Concurrent::Configuration.new)
27+
Concurrent.instance_variable_get(:@configuration).value = Concurrent::Configuration.new
2828
end
2929

3030
def kill_rogue_threads(warning = true)

0 commit comments

Comments
 (0)