37 lines
820 B
Ruby
37 lines
820 B
Ruby
module Concurrent
|
|
module Synchronization
|
|
|
|
# Volatile adds the attr_volatile class method when included.
|
|
#
|
|
# @example
|
|
# class Foo
|
|
# include Concurrent::Synchronization::Volatile
|
|
#
|
|
# attr_volatile :bar
|
|
#
|
|
# def initialize
|
|
# self.bar = 1
|
|
# end
|
|
# end
|
|
#
|
|
# foo = Foo.new
|
|
# foo.bar
|
|
# => 1
|
|
# foo.bar = 2
|
|
# => 2
|
|
|
|
Volatile = case
|
|
when Concurrent.on_cruby?
|
|
MriAttrVolatile
|
|
when Concurrent.on_jruby?
|
|
JRubyAttrVolatile
|
|
when Concurrent.on_rbx?
|
|
RbxAttrVolatile
|
|
when Concurrent.on_truffleruby?
|
|
TruffleRubyAttrVolatile
|
|
else
|
|
MriAttrVolatile
|
|
end
|
|
end
|
|
end
|