What's New? Intel® Threading Building Blocks 4.4 Update 1

Changes (w.r.t. Intel TBB 4.4):

- Added support for Microsoft* Visual Studio* 2015.
- Intel TBB no longer performs dynamic replacement of memory allocation
    functions for Microsoft Visual Studio 2005 and earlier versions.
- For GCC 4.7 and higher, the intrinsics-based platform isolation layer
    uses __atomic_* built-ins instead of the legacy __sync_* ones.
    This change is inspired by a contribution from Mathieu Malaterre.
- Improvements in task_arena:
    Several application threads may join a task_arena and execute tasks
    simultaneously. The amount of concurrency reserved for application
    threads at task_arena construction can be set to any value between
    0 and the arena concurrency limit.
- The fractal example was modified to demonstrate class task_arena
    and moved to examples/task_arena/fractal.

Bugs fixed:

- Fixed a deadlock during destruction of task_scheduler_init objects
    when one of destructors is set to wait for worker threads.
- Added a workaround for a possible crash on OS X* when dynamic memory
    allocator replacement (libtbbmalloc_proxy) is used and memory is
    released during application startup.
- Usage of mutable functors with task_group::run_and_wait() and
    task_arena::enqueue() is disabled. An attempt to pass a functor
    which operator()() is not const will produce compilation errors.
- Makefiles and environment scripts now properly recognize GCC 5.0 and
    higher.

Open-source contributions integrated:

- Improved performance of parallel_for_each for inputs allowing random
    access, by Raf Schietekat.

For more complete information about compiler optimizations, see our Optimization Notice.