# Algorithms

Most parallel algorithms provided by Intel® Threading Building Blocks (Intel® TBB) are generic. They operate on all types that model the necessary concepts. Parallel algorithms may be nested. For example, the body of a `parallel_for` can invoke another `parallel_for`.

### Caution

When the body of an outer parallel algorithm invokes another parallel algorithm, it may cause the outer body to be re-entered for a different iteration of the outer algorithm.

For example, if the outer body holds a global lock while calling an inner parallel algorithm, the body will deadlock if the re-entrant invocation attempts to acquire the same global lock. This ill-formed example is a special case of a general rule that code should not hold a lock while calling code written by another author.

Parent topic: Intel® Threading Building Blocks Reference Manual

- Splittable Concept
- Range Concept
- Partitioners
- parallel_for Template Function
- parallel_reduce Template Function
- parallel_deterministic_reduce Template Function
- parallel_scan Template Function
- parallel_do Template Function
- parallel_for_each Template Function
- pipeline Class
- parallel_pipeline Function
- parallel_sort Template Function
- parallel_invoke Template Function