Dynamic atomic bitsets
AssigneeOracle International Corporation
InventorNathan Reynolds
Life of this patent
Estimating the term…
Abstract
Embodiments of the present invention provide techniques, including systems, methods, and computer readable medium, for dynamic atomic bitsets. A dynamic atomic bitset is a data structure that provides a bitset that can grow or shrink in size as required. The dynamic atomic bitset is non-blocking, wait-free, and thread-safe.
Claims20
A tangible computer readable storage medium storing thereon a set of instructions which when executed by a processor cause the processor to create a dynamic atomic bitset object, the dynamic atomic bitset object comprising:
- an array object including:
- a pointer to a previous array object;
- and
- an atomic integer array object, wherein the number of bits in the dynamic atomic bitset object is dynamically changeable and the dynamic atomic bitset object is concurrently accessible by multiple threads without requiring the use of locks.
A system for creating a dynamic atomic bitset object comprising:
- a memory for storing instructions for creating the dynamic atomic bitset object;
- and
- a processor coupled to the memory, wherein the processor is configured to execute the instructions to create a dynamic atomic bitset object comprising:
- an array object including:
- a pointer to a previous array object;
- and
- an atomic integer array object, wherein the number of bits in the dynamic atomic bitset object is dynamically changeable and the dynamic atomic bitset object is concurrently accessible by multiple threads without requiring the use of locks.
A computer implemented method of using a dynamic atomic array object comprising:
- creating a dynamic atomic bitset object, the dynamic atomic bitset object including an array object, a pointer to a previous array object, and an atomic integer array object, wherein the number of bits in the dynamic atomic bitset object is dynamically changeable and the dynamic atomic bitset object is concurrently accessible by multiple threads without requiring the use of locks;
- creating a new array object;
- storing a pointer to the array object as the previous pointer of the new array object;
- and
- replacing the array object with the new array object using a compare and swap operation.
Dependencies are inferred from the claim text.