目錄(235章)
倒序
- 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
推薦閱讀
- 基于粒計算模型的圖像處理
- 自己動手寫搜索引擎
- GraphQL學習指南
- INSTANT OpenCV Starter
- 深入理解Django:框架內幕與實現原理
- JIRA 7 Administration Cookbook(Second Edition)
- 64位匯編語言的編程藝術
- Ray分布式機器學習:利用Ray進行大模型的數據處理、訓練、推理和部署
- JavaScript從入門到精通(第3版)
- PostgreSQL Replication(Second Edition)
- The Complete Coding Interview Guide in Java
- Mastering C++ Multithreading
- HTML5開發精要與實例詳解
- Python Automation Cookbook
- Arduino Electronics Blueprints
- Offer來了:Java面試核心知識點精講(框架篇)
- ArcPy and ArcGIS(Second Edition)
- Python數據可視化之matplotlib實踐
- Distributed Computing with Python
- Python Business Intelligence Cookbook
- Mastering PyCharm
- Xamarin Mobile Application Development for Android(Second Edition)
- Introduction to Programming
- Practical C Programming
- C語言程序設計
- 深入理解Android自動化測試
- Big Data Analytics with R
- PHP5應用實例詳解
- React+Redux前端開發實戰
- Python程序設計