# Module: Concurrent::Synchronization::TruffleRubyAttrVolatile::ClassMethods

Defined in:
  lib/concurrent/synchronization/truffleruby_object.rb

## Instance Method Summary collapse

- #attr_volatile(*names) ⇒ undocumented

## Instance Method Details

### #attr_volatile(*names) ⇒ `undocumented`

    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    # File 'lib/concurrent/synchronization/truffleruby_object.rb', line 10

    def attr_volatile(*names)
      names.each do |name|
        ivar = :"@volatile_#{name}"

        class_eval <<-RUBY, __FILE__, __LINE__ + 1
          def #{name}
            full_memory_barrier
            #{ivar}
          end

          def #{name}=(value)
            #{ivar} = value
            full_memory_barrier
          end
        RUBY
      end

      names.map { |n| [n, :"#{n}="] }.flatten
    end