Sha256: 3a215666129d5d05d3b2bf05c6de8cefb1e5b74baa8cf54b1b4ed4a51ab8bd26

Contents?: true

Size: 1.23 KB

Versions: 42

Compression:

Stored size: 1.23 KB

Contents

module ThreadSafe
  module Util
    AtomicReference =
      if defined?(Rubinius::AtomicReference)
        # An overhead-less atomic reference.
        Rubinius::AtomicReference
      else
        begin
          require 'atomic'
          defined?(Atomic::InternalReference) ? Atomic::InternalReference : Atomic
        rescue LoadError, NameError
          require 'thread' # get Mutex on 1.8
          class FullLockingAtomicReference
            def initialize(value = nil)
              @___mutex = Mutex.new
              @___value = value
            end

            def get
              @___mutex.synchronize { @___value }
            end
            alias_method :value, :get

            def set(new_value)
              @___mutex.synchronize { @___value = new_value }
            end
            alias_method :value=, :set

            def compare_and_set(old_value, new_value)
              return false unless @___mutex.try_lock
              begin
                return false unless @___value.equal? old_value
                @___value = new_value
              ensure
                @___mutex.unlock
              end
              true
            end
          end

          FullLockingAtomicReference
        end
      end
  end
end

Version data entries

42 entries across 40 versions & 19 rubygems

Version Path
logstash-input-fifo-0.9.1 vendor/bundle/jruby/1.9/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-input-fifo-0.9.0 vendor/bundle/jruby/1.9/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-input-salesforce-3.0.0 vendor/jruby/1.9/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
abaci-0.3.0 vendor/bundle/gems/thread_safe-0.3.5/lib/thread_safe/util/atomic_reference.rb
ivanvc-logstash-input-s3-3.1.1.4 vendor/local/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
ivanvc-logstash-input-s3-3.1.1.3 vendor/local/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
ivanvc-logstash-input-s3-3.1.1.2 vendor/local/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
second_step-0.1.2 secondstep-notify-1.0.0-osx/lib/ruby/lib/ruby/gems/2.2.0/gems/thread_safe-0.3.5/lib/thread_safe/util/atomic_reference.rb
logstash-filter-delta-1.1.0 vendor/bundle/jruby/2.2.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-delta-1.0.1 vendor/bundle/jruby/2.2.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-base64-1.0.4 vendor/bundle/jruby/2.2.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-base64-1.0.3 vendor/bundle/jruby/2.2.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-delta-1.0.0 vendor/bundle/jruby/2.2.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-base64-1.0.2 vendor/bundle/jruby/2.3.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-base64-1.0.1 vendor/bundle/jruby/2.3.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
logstash-filter-base64-1.0.0 vendor/bundle/jruby/2.3.0/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
able-neo4j-1.0.0 vendor/bundle/jruby/1.9/gems/thread_safe-0.3.5-java/lib/thread_safe/util/atomic_reference.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/thread_safe-0.3.5/lib/thread_safe/util/atomic_reference.rb
angular-rails4-templates-0.4.1 vendor/ruby/2.1.0/gems/thread_safe-0.3.5/lib/thread_safe/util/atomic_reference.rb
angular-rails4-templates-0.4.0 vendor/ruby/2.1.0/gems/thread_safe-0.3.5/lib/thread_safe/util/atomic_reference.rb