Module: Concurrent::Synchronization::RbxAttrVolatile::ClassMethods — Concurrent

Class List Method List File List

# Module: Concurrent::Synchronization::RbxAttrVolatile::ClassMethods

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

## Instance Method Summary (collapse)

- - (undocumented) attr_volatile(*names)

## Instance Method Details

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

    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    # File 'lib/concurrent/synchronization/rbx_object.rb', line 11

    def attr_volatile(*names)
      names.each do |name|
        ivar = :@volatile_#{name}"
        class_eval <<-RUBY, __FILE__, __LINE__ + 1
          def #{name}
            Rubinius.memory_barrier
            #{ivar}
          end

          def #{name}=(value)
            #{ivar} = value
            Rubinius.memory_barrier
          end
        RUBY
      end
      names.map { |n| [n, :#{n}="] }.flatten
    end