Class: Concurrent::LockFreeQueue::Node

Inherits:
Synchronization::Object
  • Object
show all
Defined in:
lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb

Instance Method Summary collapse

Constructor Details

#initialize(item, successor) ⇒ Node

Returns a new instance of Node.



11
12
13
14
15
16
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 11

def initialize(item, successor)
  super()
  # published through queue, no need to be volatile or final
  @Item          = item
  self.successor = successor
end

Instance Method Details

#compare_and_set_successor(expected_successor, new_successor) ⇒ true, false

Sets the successor to new_successor if the current successor is expected_successor

Returns:

  • (true, false)


9
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 9

attr_atomic :successor

#itemundocumented



18
19
20
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 18

def item
  @Item
end

#successorObject

Returns The successor.

Returns:

  • (Object)

    The successor.



9
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 9

attr_atomic :successor

#successor=(new_successor) ⇒ Object

Set the successor.

Returns:

  • (Object)

    new_successor.



9
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 9

attr_atomic :successor

#swap_successor(new_successor) ⇒ Object

Set the successor to new_successor and return the old successor.

Returns:

  • (Object)

    old successor



9
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 9

attr_atomic :successor

#update_successor {|Object| ... } ⇒ Object

Updates the successor using the block.

Yields:

  • (Object)

    Calculate a new successor using given (old) successor

Yield Parameters:

  • old (Object)

    successor

Returns:

  • (Object)

    new successor



9
# File 'lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb', line 9

attr_atomic :successor