## Overview

This directory contains common code that is used in the Intel® Threading Building Blocks (Intel® TBB) examples.

This code is not intended to be used directly. It is incorporated automatically by the examples that need it.

## Directories

gui
  GUI code for examples that have graphical user interfaces. Currently supports:
  - GDI+*, DirectDraw*, Direct2D* (Windows* systems)
  - OpenGL* (OS X* systems)
  - X window (Linux* or OS X* systems)
  See the examples that use the GUI (tachyon, seismic) for more details.

utility
  Common driver & utility code for examples. Currently provides:
  - class FastRandom - a random number generator that uses linear congruental method (fast_random.h)
  - class thread_number_range - a class to specify the numbers of threads an example should use (utility.h)
  - support for command line interface - class cli_argument_pack and function parse_cli_arguments (utility.h)

## Common information

### Number of threads

Most Intel TBB examples allow to specify n-of-threads, the set of thread numbers that should be used to run an example.
Usually, it is a range of the form low[:high[:(+|*|#)S]], where low and optional high are non-negative integers or 'auto' for the default choice, and optional step expression (+|*|#)S specifies how thread numbers are chosen within the range:

- With +/*, the previous number is incremented/multiplied by S. E.g., expression '12:16:+1' means 12,13,14,15,16 threads, and '1:16:*2' means 1,2,4,8,16 threads.
- With #, S is the desired number of steps between any subsequent powers of 2; it must be a power of 2 on its own, with most meaningful values being 2,4, and 8. For a given number of threads, the actual step value is computed as the quotient of the nearest smaller power of 2 divided by the number of steps, but is at least 1. E.g., '1:32:#4' means 1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32 threads; note the step doubling at 8 and 16 to keep 4 steps between powers of 2.

A default value for the number of threads can be customized in an example; if not customized, it is '1:auto:#4'. The 'auto' parameter is substituted with a value returned by a specified function, which typically is tbb::task_scheduler_init::default_num_threads().

Up to parent directory

Copyright © 2005-2014 Intel Corporation. All Rights Reserved.

Intel is a registered trademark or trademark of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.