The TBB_DO_THREADING_TOOLS Macro
The macro TBB_DO_THREADING_TOOLS controls support for the following Intel threading analysis and debugging tools:
Intel Thread Profiler
Intel Thread Checker
More information is available at http://intel.com/software/products.
Define TBB_DO_THREADING_TOOLS as 1 to enable full support for these tools. The debug version of the library always has full support enabled.
Leave TBB_DO_THREADING_TOOLS undefined or 0 to enable top performance, at the expense of turning off some support for tools. In the current implementation, the only features affected are spin_mutex and spin_rw_mutex.
The Intel Thread Checker is a tool that helps you detect the potential for deadlock or race conditions in a program by observing it while it is running. The checker has special support for Threading Building Blocks, and by defining TBB_DO_THREADING_TOOLS for full support, you will get better diagnostics.
The checker works by recording when each thread sends or receives a synchronization message. For instance, when releasing a lock, a thread is effectively sending the message, “I’m done with the critical section,” whereas acquiring a lock receives that message.
The checker recognizes standard Windows API calls, but it can have difficulty with Threading Building Blocks without a little help; hence, TBB_DO_THREADING_TOOLS. Some of the Threading Building Blocks calls may be inlined, which would generally make them escape detection without this help.
The checker lets you decorate calls with ...