cover
Title Page
Copyright
Mastering C++ Multithreading
Credits
About the Author
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Downloading the example code
Errata
Piracy
Questions
Revisiting Multithreading
Getting started
The multithreaded application
Makefile
Other applications
Summary
Multithreading Implementation on the Processor and OS
Defining processes and threads
Tasks in x86 (32-bit and 64-bit)
Process state in ARM
The stack
Defining multithreading
Flynn's taxonomy
Symmetric versus asymmetric multiprocessing
Loosely and tightly coupled multiprocessing
Combining multiprocessing with multithreading
Multithreading types
Temporal multithreading
Simultaneous multithreading (SMT)
Schedulers
Tracing the demo application
Mutual exclusion implementations
Hardware
Software
Summary
C++ Multithreading APIs
API overview
POSIX threads
Windows support
PThreads thread management
Mutexes
Condition variables
Synchronization
Semaphores
Thread local storage (TLC)
Windows threads
Thread management
Advanced management
Synchronization
Condition variables
Thread local storage
Boost
Qt
QThread
Thread pools
Synchronization
QtConcurrent
Thread local storage
POCO
Thread class
Thread pool
Thread local storage (TLS)
Synchronization
C++ threads
Putting it together
Summary
Thread Synchronization and Communication
Safety first
The scheduler
High-level view
Implementation
Request class
Worker class
Dispatcher
Makefile
Output
Sharing data
Using r/w-locks
Using shared pointers
Summary
Native C++ Threads and Primitives
The STL threading API
Boost.Thread API
The 2011 standard
C++14
C++17
STL organization
Thread class
Basic use
Passing parameters
Return value
Moving threads
Thread ID
Sleeping
Yield
Detach
Swap
Mutex
Basic use
Non-blocking locking
Timed mutex
Lock guard
Unique lock
Scoped lock
Recursive mutex
Recursive timed mutex
Shared mutex
Shared timed mutex
Condition variable
Condition_variable_any
Notify all at thread exit
Future
Promise
Shared future
Packaged_task
Async
Launch policy
Atomics
Summary
Debugging Multithreaded Code
When to start debugging
The humble debugger
GDB
Debugging multithreaded code
Breakpoints
Back traces
Dynamic analysis tools
Limitations
Alternatives
Memcheck
Basic use
Error types
Illegal read / illegal write errors
Use of uninitialized values
Uninitialized or unaddressable system call values
Illegal frees
Mismatched deallocation
Overlapping source and destination
Fishy argument values
Memory leak detection
Helgrind
Basic use
Misuse of the pthreads API
Lock order problems
Data races
DRD
Basic use
Features
C++11 threads support
Summary
Best Practices
Proper multithreading
Wrongful expectations - deadlocks
Being careless - data races
Mutexes aren't magic
Locks are fancy mutexes
Threads versus the future
Static order of initialization
Summary
Atomic Operations - Working with the Hardware
Atomic operations
Visual C++
GCC
Memory order
Other compilers
C++11 atomics
Example
Non-class functions
Example
Atomic flag
Memory order
Relaxed ordering
Release-acquire ordering
Release-consume ordering
Sequentially-consistent ordering
Volatile keyword
Summary
Multithreading with Distributed Computing
Distributed computing in a nutshell
MPI
Implementations
Using MPI
Compiling MPI applications
The cluster hardware
Installing Open MPI
Linux and BSDs
Windows
Distributing jobs across nodes
Setting up an MPI node
Creating the MPI host file
Running the job
Using a cluster scheduler
MPI communication
MPI data types
Custom types
Basic communication
Advanced communication
Broadcasting
Scattering and gathering
MPI versus threads
Potential issues
Summary
Multithreading with GPGPU
The GPGPU processing model
Implementations
OpenCL
Common OpenCL applications
OpenCL versions
OpenCL 1.0
OpenCL 1.1
OpenCL 1.2
OpenCL 2.0
OpenCL 2.1
OpenCL 2.2
Setting up a development environment
Linux
Windows
OS X/MacOS
A basic OpenCL application
GPU memory management
GPGPU and multithreading
Latency
Potential issues
Debugging GPGPU applications
Summary
更新时间:2021-07-15 17:34:39