이미 소장하고 있다면 판매해 보세요.
|
Foreword
Note from the Lead Developer of Intel Threading Building Blocks Preface 1. Why Threading Building Blocks? Overview Benefits 2. Thinking Parallel Elements of Thinking Parallel Decomposition Scaling and Speedup What Is a Thread? Mutual Exclusion and Locks Correctness Abstraction Patterns Intuition 3. Basic Algorithms Initializing and Terminating the Library Loop Parallelization Recursive Range Specifications Summary of Loops 4. Advanced Algorithms Parallel Algorithms for Streams 5. Containers concurrent_queue concurrent_vector concurrent_hash_map 6. Scalable Memory Allocation Limitations Problems in Memory Allocation Memory Allocators Replacing malloc, new, and delete 7. Mutual Exclusion When to Use Mutual Exclusion Mutexes Mutexes Atomic Operations 8. Timing 9. Task Scheduler When Task-Based Programming Is Inappropriate Much Better Than Raw Native Threads Initializing the Library Is Your Job Example Program for Fibonacci Numbers Task Scheduling Overview How Task Scheduling Works Recommended Task Recurrence Patterns Making Best Use of the Scheduler Task Scheduler Interfaces Task Scheduler Summary 10. Keys to Success Key Steps to Success Relaxed Sequential Execution Safe Concurrency for Methods and Libraries Debug Versus Release For Efficiency's Sake Enabling Debugging Features Mixing with Other Threading Packages Naming Conventions 11. Examples The Aha! Factor A Few Other Key Points parallel_for Examples The Game of Life Parallel_reduce Examples CountStrings: Using concurrent_hash_map Quicksort: Visualizing Task Stealing A Better Matrix Multiply (Strassen) Advanced Task Programming Packet Processing Pipeline Memory Allocation Game Threading Example Physics Interaction and Update Code Open Dynamics Engine 12. History and Related Projects Libraries Languages Pragmas Generic Programming Caches Costs of Time Slicing Quick Introduction to Lambda Functions Further Reading Index |