O'Reilly logo

Intel Threading Building Blocks by James Reinders

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Advanced Task Programming

This section could be called "Dummy Tasks to the Rescue” because, although the design of Threading Building Blocks is very simple at the core, there are times when you want a little more help.

This section has two examples that use a dummy task to create relationships among tasks that at first seem impossible because they have non-treelike dependence graphs. In the first example, we give a sibling task to the main program that is usually the base of the tree. In the second example, we set up a pipeline with a fork in it. It is a classic example of avoiding locks through implicit synchronization. We’ll name the two examples as follows:

  • Start a Large Task in Parallel with the Main Program

  • Two Mouths: Feeding Two from the Same Task in a Pipeline

Start a Large Task in Parallel with the Main Program

Instead of having all threads execute portions of a problem, it is possible to start a task in parallel with the main application. We’ve seen a number of requests for how to do this. The trick is to use a nonexecuting dummy task as the parent on which to synchronize, as shown in Example 11-37. Something very close to this trick is already used in tbb/parallel_while.h and tbb/parallel_scan.h, shown earlier.

One of the beautiful things about this approach is that each half of the program is free to invoke as much parallelism as it desires. The task-based approach of Threading Building Blocks does the load balancing and manages the assignment of tasks to threads without causing ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required