Exception: Concurrent::ConcurrentUpdateError

Inherits:
ThreadError
  • Object
show all
Defined in:
lib/concurrent/atomic_reference/concurrent_update_error.rb

Overview

An object reference that may be updated atomically.

Testing with ruby 2.1.2

*** Sequential updates ***
                          user     system      total        real
no lock               0.000000   0.000000   0.000000 (  0.005502)
mutex                 0.030000   0.000000   0.030000 (  0.025158)
MutexAtomicReference  0.100000   0.000000   0.100000 (  0.103096)
CAtomicReference      0.040000   0.000000   0.040000 (  0.034012)

*** Parallel updates ***
                          user     system      total        real
no lock               0.010000   0.000000   0.010000 (  0.009387)
mutex                 0.030000   0.010000   0.040000 (  0.032545)
MutexAtomicReference  0.830000   2.280000   3.110000 (  2.146622)
CAtomicReference      0.040000   0.000000   0.040000 (  0.038332)

Testing with jruby 1.9.3

*** Sequential updates ***
                          user     system      total        real
no lock               0.170000   0.000000   0.170000 (  0.051000)
mutex                 0.370000   0.010000   0.380000 (  0.121000)
MutexAtomicReference  1.530000   0.020000   1.550000 (  0.471000)
JavaAtomicReference   0.370000   0.010000   0.380000 (  0.112000)

*** Parallel updates ***
                          user     system      total        real
no lock               0.390000   0.000000   0.390000 (  0.105000)
mutex                 0.480000   0.040000   0.520000 (  0.145000)
MutexAtomicReference  1.600000   0.180000   1.780000 (  0.511000)
JavaAtomicReference   0.460000   0.010000   0.470000 (  0.131000)

Constant Summary collapse

CONC_UP_ERR_BACKTRACE =

frozen pre-allocated backtrace to speed ConcurrentUpdateError

['backtrace elided; set verbose to enable'].freeze

Instance Method Summary collapse

Constructor Details

#initializeObject

Parameters:

  • value (Object)

    The initial value.



4
5
6
7
# File 'lib/concurrent/atomic_reference/concurrent_update_error.rb', line 4

class ConcurrentUpdateError < ThreadError
  # frozen pre-allocated backtrace to speed ConcurrentUpdateError
  CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
end

Instance Method Details

#compare_and_setBoolean

Atomically sets the value to the given updated value if the current value == the expected value.

that the actual value was not equal to the expected value.

Parameters:

  • old_value (Object)

    the expected value

  • new_value (Object)

    the new value

Returns:

  • (Boolean)

    true if successful. A false return indicates



4
5
6
7
# File 'lib/concurrent/atomic_reference/concurrent_update_error.rb', line 4

class ConcurrentUpdateError < ThreadError
  # frozen pre-allocated backtrace to speed ConcurrentUpdateError
  CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
end

#getObject

Gets the current value.

Returns:

  • (Object)

    the current value



4
5
6
7
# File 'lib/concurrent/atomic_reference/concurrent_update_error.rb', line 4

class ConcurrentUpdateError < ThreadError
  # frozen pre-allocated backtrace to speed ConcurrentUpdateError
  CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
end

#get_and_setObject

Atomically sets to the given value and returns the old value.

Parameters:

  • new_value (Object)

    the new value

Returns:

  • (Object)

    the old value



4
5
6
7
# File 'lib/concurrent/atomic_reference/concurrent_update_error.rb', line 4

class ConcurrentUpdateError < ThreadError
  # frozen pre-allocated backtrace to speed ConcurrentUpdateError
  CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
end

#setObject

Sets to the given value.

Parameters:

  • new_value (Object)

    the new value

Returns:

  • (Object)

    the new value



4
5
6
7
# File 'lib/concurrent/atomic_reference/concurrent_update_error.rb', line 4

class ConcurrentUpdateError < ThreadError
  # frozen pre-allocated backtrace to speed ConcurrentUpdateError
  CONC_UP_ERR_BACKTRACE = ['backtrace elided; set verbose to enable'].freeze
end