Class: Concurrent::Set

Inherits:
SetImplementation
  • Object
show all
Defined in:
lib/concurrent/set.rb

Overview

Note:

a += b is not a thread-safe operation on

A thread-safe subclass of Set. This version locks against the object itself for every method call, ensuring only one thread can be reading or writing at a time. This includes iteration methods like #each.

Concurrent::Set. It reads Set a, then it creates new Concurrent::Set which is union of a and b, then it writes the union to a. The read and write are independent operations they do not form a single atomic operation therefore when two += operations are executed concurrently updates may be lost. Use #merge instead.