Intel® oneAPI Threading Building Blocks (oneTBB)
Getting Help and Support
Notational Conventions
Introduction
oneTBB Benefits
oneTBB Developer Guide
Package Contents
Parallelizing Simple Loops
Parallelizing Complex Loops
Parallelizing Data Flow and Dependence Graphs
Parallelizing Data Flow and Dependency Graphs
Basic Flow Graph Concepts
Graph Application Categories
Predefined Node Types
Flow Graph Tips and Tricks
Flow Graph Tips for Waiting for and Destroying a Flow Graph
Flow Graph Tips on Making Edges
Flow Graph Tips on Nested Parallelism
Flow Graph Tips for Limiting Resource Consumption
Flow Graph Tips for Exception Handling and Cancellation
Estimating Flow Graph Performance
Work Isolation
Exceptions and Cancellation
Floating-point Settings
Containers
Mutual Exclusion
Timing
Memory Allocation
The Task Scheduler
Design Patterns
Migrating from Threading Building Blocks (TBB)
Constrained APIs
Invoke a Callable Object
Appendix A Costs of Time Slicing
Appendix B Mixing With Other Threading Packages
References
oneTBB API Reference
Notices and Disclaimers
Intel® oneAPI Threading Building Blocks (oneTBB)
oneTBB Developer Guide
Parallelizing Data Flow and Dependence Graphs
Flow Graph Tips and Tricks
View page source
Flow Graph Tips and Tricks
Flow Graph Tips for Waiting for and Destroying a Flow Graph
Always Use wait_for_all()
Avoid Dynamic Node Removal
Destroying Graphs That Run Outside the Main Thread
Flow Graph Tips on Making Edges
Use make_edge and remove_edge
Sending to One or Multiple Successors
Communication Between Graphs
Using input_node
Avoiding Data Races
Flow Graph Tips on Nested Parallelism
Use Nested Algorithms to Increase Scalability
Use Nested Flow Graphs
Flow Graph Tips for Limiting Resource Consumption
Using limiter_node
Use Concurrency Limits
Create a Token-Based System
Attach Flow Graph to an Arbitrary Task Arena
Guiding Task Scheduler Execution
Work Isolation
Flow Graph Tips for Exception Handling and Cancellation
Catching Exceptions Inside the Node that Throws the Exception
Cancel a Graph Explicitly
Use graph::reset() to Reset a Canceled Graph
Canceling Nested Parallelism