Everything about Thread pool
Software design pattern
In computer programming, a thread pool is a software design pattern for achieving concurrency of execution in a computer program. Often also called a replicated workers or worker-crew model, a thread pool maintains multiple threads waiting for tasks to be allocated for concurrent execution by the supervising program. By maintaining a pool of threads, the model increases performance and avoids latency in execution due to frequent creation and destruction of threads for short-lived tasks. Another good property - the ability to limit system load, when we use fewer threads than available. The number of available threads is tuned to the computing resources available to the program, such as a parallel task queue after completion of execution. Wikipedia →
đź§ Start here: a 6-step reading path
- Read the overview: Thread poolA 5-minute orientation
- Skim a recent paper: MODIFICATION OF A THREAD POOL ALGORITHM WITH MULTIPLE TASK QUEUESInfluential work since 2022
- Pick up a classic book: The Hound of the BaskervillesThe most-reprinted book on the subject
- Read the landmark paper: Analysis of optimal thread pool sizeCited 53 times
- Go sideways: Object pool patternA closely related topic
- Go sideways: Channel (programming)A closely related topic
đź“– Definitions
Noun A pool of threads of execution created to perform a number of tasks.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Analysis of optimal thread pool size
A parallel particle swarm optimization framework based on a fork-join thread pool using a work-stealing mechanism
Towards optimal thread pool configuration for run-time systems of integration platforms
Evaluating and Optimizing Thread Pool Strategies for Real-Time CORBA
Producer-consumer Model Based Thread Pool Design
A Perfect Knob to Scale Thread Pool on Runtime
A C++17 thread pool for high-performance scientific computing
PoolRunner: An Extensible Performance Testing Simulation Tool for Thread-Pool Middleware
🆕 Influential since 2022
MODIFICATION OF A THREAD POOL ALGORITHM WITH MULTIPLE TASK QUEUES
SCHEDULING: A FAST C++ THREAD POOL IMPLEMENTATION CAPABLE OF EXECUTING TASK GRAPHS
CloudSafe-TP: Hybrid AI-Based SLO-Aware Predictive Thread-Pool Control for Distributed Cloud Backends
Granularity-Aware Capacity Probing for Overload Recovery and Capacity Rediscovery in Distributed Systems with Thread-Pool Backends
📚 Books worth reading
The Hound of the BaskervillesArthur Conan Doyle · 1900
The Complete Sherlock Holmes [4 novels, 56 stories]Arthur Conan Doyle · 1900
Tarzan TriumphantEdgar Rice Burroughs · 1931
One-act plays of to-dayJ. W. Marriott · 1924
Pthreads programmingBradford Nichols, Dick Buttlar · 1996
Programming Massively Parallel ProcessorsDavid Kirk, Wen-Mei W. Hwu · 2010
C# 4.0 unleashedBart De Smet · 2011
Programming in C#E. Balagurusamy · 2002
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
đź”— Related topics
- Object pool pattern The object pool pattern is a software creational design pattern that uses a set of initialized objects kept ready to use – a "pool" – rather than allocating…
- Channel (programming) Computer programming portal In computing, a channel is a model for inter-thread communication and synchronization via message passing. A message may be…
- Virtual thread In computer programming, a virtual thread is a thread that is managed by a runtime library or virtual machine (VM) and made to resemble a kernel thread…
- Producer–consumer problem In computing, the producer-consumer problem (also known as the bounded-buffer problem) is a family of problems described by Edsger W. Dijkstra since 1965…
- Work stealing In parallel computing, work stealing is a scheduling strategy for multithreaded computer programs. It solves the problem of executing a dynamically multithreade…
- Async/await In computer programming, the async/await pattern is a syntactic feature of many programming languages that allows an asynchronous, non-blocking function…
- Coroutine Coroutines are computer program components that can be suspended and resumed — generalizing subroutines — for cooperative multitasking. Coroutines are…
- Go (programming language) Go (often referred to as Golang) is a high-level, general-purpose programming language that is statically typed and compiled. Originally designed in 2007…