1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
require 'concurrent/synchronization'
require 'concurrent/utility/engine'
require 'concurrent/atomic_reference/concurrent_update_error'
require 'concurrent/atomic_reference/mutex_atomic'
begin
# force fallback impl with FORCE_ATOMIC_FALLBACK=1
if /[^0fF]/ =~ ENV['FORCE_ATOMIC_FALLBACK']
ruby_engine = 'mutex_atomic'
else
ruby_engine = Concurrent.ruby_engine
end
require "concurrent/atomic_reference/#{ruby_engine}"
rescue LoadError
#warn 'Compiled extensions not installed, pure Ruby Atomic will be used.'
end
if defined? Concurrent::JavaAtomicReference
# @!macro atomic_reference
class Concurrent::AtomicReference < Concurrent::JavaAtomicReference
end
elsif defined? Concurrent::RbxAtomicReference
# @!macro atomic_reference
class Concurrent::AtomicReference < Concurrent::RbxAtomicReference
end
elsif defined? Concurrent::CAtomicReference
# @!macro atomic_reference
class Concurrent::AtomicReference < Concurrent::CAtomicReference
end
else
# @!macro atomic_reference
class Concurrent::AtomicReference < Concurrent::MutexAtomicReference
end
end
class Concurrent::AtomicReference
# @return [String] Short string representation.
def to_s
format '<#%s:0x%x value:%s>', self.class, object_id << 1, get
end
alias_method :inspect, :to_s
end
|