目錄(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
推薦閱讀
- 少兒人工智能趣味入門:Scratch 3.0動畫與游戲編程
- 自然語言處理實戰:預訓練模型應用及其產品化
- Java系統分析與架構設計
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- Instant Zepto.js
- Unity Virtual Reality Projects
- PLC編程及應用實戰
- Java應用開發技術實例教程
- Learn React with TypeScript 3
- Android系統原理及開發要點詳解
- Android玩家必備
- 并行編程方法與優化實踐
- Selenium WebDriver Practical Guide
- Python面試通關寶典
- Android智能手機APP界面設計實戰教程
- Puppet 5 Beginner's Guide(Third Edition)
- Testing Practitioner Handbook
- Python Natural Language Processing
- Android for the BeagleBone Black
- Python從入門到全棧開發
- JavaScript編程思想:從ES5到ES9
- 基于Eclipse平臺的JSP應用教程(第2版)
- 從Scratch進階到Python(基礎篇)
- Puppet 5 Cookbook
- 測試反模式:有效規避常見的92種測試陷阱
- Access2010實用教程
- C++編程入門指南(全2冊)
- OpenShift在企業中的實踐:PaaS DevOps微服務
- Python游戲設計案例實戰
- SQL Server 2016 Developer's Guide