What's New in TBB 4.0?
Flow Graph - Flexible and convenient API for expressing static and dynamic dependencies between computations. Also extends applicability of Intel(R) TBB to event-driven/reactive programming models.
Task and task group priorities - Provides ability to specify task execution order based on three priority levels (low, normal, and high). Static priorities are supported for enqueued tasks; dynamic priorities are supported for task groups.
Memory Pools - Enables Intel(R) TBB memory allocator to work on user-provided memory regions. This mechanism allows greater flexibility and performance by getting thread-safe and scalable object allocation in the application-specific memory blocks with custom life-span and growth policies.
Concurrent Priority Queue - A queue that allows pulling data out in a user-defined priority order. The concurrent priority queue is useful when a certain execution order is enforced by priority relationship between parallel tasks and/or data.
Concurrent Unordered Set - New thread-safe container to store and access user objects using a hash key. Implements a concurrent variation of a standard C++ class std::unordered_set.
Generic GCC* Atomics Support - Greater library portability which enables the user to develop Intel(R) TBB-based solutions on a broader range of platforms. The user now has a choice to use built-in GCC* atomics routines instead of supplied platform-specific ones.
New Examples - New examples demonstrate usage of major new features:
- Shortest path (concurrent_priority_queue)
- Dining philosophers, binpack (flow graph)
- Mandelbrot fractal (task priority)


