Skip to content
Category

Concurrency control

page 1
semaphore
variable that is changed (e.g., incremented, decremented, toggled) depending on programmer-defined conditions, used to control access to a common resource by multiple processes in a concurrent system
atomicity, consistency, isolation, durability
In computer science, ACID (atomicity, consistency, isolation, durability) is a set of properties of database transactions intended to guarantee data validity despite errors, power failures, and other mishaps. For example, a transfer of funds from one bank account to another, involving multiple changes such as debiting one account and crediting another, is a single transaction.
critical section
protected section of code that cannot be executed by more than one process at a time
busy waiting
computer programming technique in which a process repeatedly checks to see if a condition is true
mutual exclusion
property of concurrency control, which is instituted for the purpose of preventing race conditions
monitor
in concurrent programming, an object or module intended to be used safely by more than one thread
lock
synchronization mechanism for enforcing limits on concurrent access to a resource
multiversion concurrency control
concurrency control method commonly used by database management systems
priority inversion
undesirable computing scheduling scenario
Asynchronous I/O
form of input/output processing
global interpreter lock
coarse-grained mutex used in some process virtual machines
concurrency control
measures to ensure concurrent computing operations generate correct results
Test-and-set
In computer science, the test-and-set instruction is an instruction used to write (set) a flag value to a memory location and return its old value as a single atomic (i.e., non-interruptible) operation. The caller can then "test" the result to see if the state was changed by the call. If multiple processes may access the same memory location, and if a process is currently performing a test-and-set, no other process may begin another test-and-set until the first process's test-and-set is finished. A central processing unit (CPU) may use a test-and-set instruction offered by another electronic c
barrier
computer synchronization mechanism that enforces an ordering on operations before and after the barrier
volatile variable
in some programming languages (C, C++, C#, Java), a variable specially marked to disable optimizations because its value may change between accesses even if it does not appear to be modified; primarily used in hardware access and in threading
compare-and-swap
In computer science, compare-and-swap (CAS) is an atomic instruction used in multithreading to achieve synchronization. It compares the contents of a memory location with a given (the previous) value and, only if they are the same, modifies the contents of that memory location to a new given value. This is done as a single atomic operation. The atomicity guarantees that the new value is calculated based on up-to-date information; if the value had been updated by another thread in the meantime, the write would fail. The result of the operation must indicate whether it performed the substitution
schedule
abstract model to describe execution of transactions running in the system
non-blocking algorithm
class of algorithms
double-checked locking
design pattern only locking if the locking criterion check indicates that locking is required
priority inheritance
aspect of an operating system
two-phase locking
concurrency control locking protocol in databases and transaction processing
optimistic concurrency control
Concurrency control method
transactional memory
concurrency control mechanism, analogous to database transactions for controlling access to shared memory in concurrent computing, that simplifies concurrent programming by allowing a group of load and store instructions to execute in an atomic way
fetch-and-add
In computer science, the fetch-and-add (FAA) CPU instruction atomically increments the contents of a memory location by a specified value.
linearizability
thumb|In grey a linear sub-history, processes beginning in do not have a linearizable history because or may complete in either order before occurs.
futex
In computing, a futex (short for "fast userspace mutex") is a kernel system call that programmers can use to implement basic locking, or as a building block for higher-level locking abstractions such as semaphores and POSIX mutexes or condition variables.
Load-link/store-conditional
In computer science, load-linked/store-conditional (LL/SC), sometimes known as load-reserved/store-conditional (LR/SC), are a pair of instructions used in multithreading to achieve synchronization. Load-link returns the current value of a memory location, while a subsequent store-conditional to the same memory location will store a new value only if no updates have occurred to that location since the load-link. Together, this implements a lock-free, atomic, read-modify-write operation.
software transactional memory
concurrency control mechanism for controlling access to shared memory in concurrent computing
giant lock
lock used in the kernel to provide concurrency control required by symmetric multiprocessing systems
Read-copy-update
In computer science, read-copy-update (RCU) is a synchronization mechanism that avoids the use of lock primitives while multiple threads concurrently read and update elements that are linked through pointers and that belong to shared data structures (e.g., linked lists, trees, hash tables).
timestamp-based concurrency control
Operational transformation
optimistic concurrency control method for group editing
Language Of Temporal Ordering Specification
Formal specification language in computer science
Read-modify-write
In computer science, read–modify–write is a class of atomic operations (such as test-and-set, fetch-and-add, and compare-and-swap) that both read a memory location and write a new value into it simultaneously, either with a completely new value or some function of the previous value. These operations prevent race conditions in multi-threaded applications. Typically they are used to implement mutexes or semaphores. These atomic operations are also heavily used in non-blocking synchronization.