concurrency pattern
types of design patterns
deadlock
state in which members are blocking each other
lock
synchronization mechanism for enforcing limits on concurrent access to a resource
thread-local storage
memory management method that uses static or global memory local to a thread
guarded suspension
concurrency design pattern which suspends a method call and the calling thread until a precondition (guard) is satisfied
join-pattern
scalable, high level method for writing concurrent, parallel and distributed programs using message passing which are atomically consumed from a group of channels, abstracting away threads and locks
reactor pattern
event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs; the service handler then demultiplexes the incoming requests and dispatches them synchronously to the associated request handlers
scheduling
in computing, what carries out the scheduling activity
busy waiting
computer programming technique in which a process repeatedly checks to see if a condition is true
monitor
in concurrent programming, an object or module intended to be used safely by more than one thread
future
in concurrent programming, an object serves as a placeholder for a result that is initially unknown because the computation is incomplete (such an object is crucial in representing the final result during ongoing or not-yet-started computations)
asynchronous method invocation
multithread design pattern where the calling thread is notified when the reply arrives, thereby not blocking the call site while waiting for called code to finish
set priority level
collection of Unix interrupt priority control commands
priority inversion
undesirable computing scheduling scenario
race condition
situation in computer system that occurs when multiple processes try to access a common resource
double-checked locking
design pattern only locking if the locking criterion check indicates that locking is required
active object
design pattern for concurrency using asynchronous method invocation with a scheduler for handling requests
thread pool
a method for efficient parallel processing in computer programs (pre-creating threads and reusing them as tasks occur, reducing overhead of thread creation and destruction, improving system performance, and optimizing resource management)
balking pattern
design pattern that only executes an action on an object when the object is in a particular state
messaging pattern
any architectural pattern describing communication between software systems or subsystems