Showing results for 
Search instead for 
Did you mean: 

Intel Threading Building Blocks 4.1 released and posted to site

Hello All,


A new major release of one of the most comprehensive and powerful C++ threading libraries was just announced. Intel Treading Building Blocks development team just released Intel® TBB 4.1. As usual, it is available in both commercial and OSS variants, for Windows*, Linux* and OS X*.
So go and download the new release from the product site.


What’s new in TBB 4.1:

Changes (w.r.t. TBB 4.0 Update 5):
- _WIN32_WINNT must be set to 0x0501 or greater in order to use TBB
    on Microsoft* Windows*.
- parallel_deterministic_reduce template function is fully supported.
- TBB headers can be used with C++0x/C++11 mode (-std=c++0x) of GCC
    and Intel(R) Compiler.
- C++11 std::make_exception_ptr is used where available, instead of
    std::copy_exception from earlier C++0x implementations.
- Improvements in the TBB allocator to reduce extra memory consumption.
- Partial refactoring of the task scheduler data structures.
- TBB examples allow more flexible specification of the thread number,
    including arithmetic and geometric progression.

Bugs fixed:
- On Linux & Mac OS* X, pre-built TBB binaries do not yet support exact
    exception propagation via C++11 exception_ptr. To prevent run time
    errors, by default TBB headers disable exact exception propagation
    even if the C++ implementation provides exception_ptr.

Community Preview Features:
- Added: class task_arena, for work submission by multiple application
    threads with thread-independent control of concurrency level.
- Added: task_scheduler_observer can be created as local to a master
    thread, to observe threads that work on behalf of that master.
    Local observers may have new on_scheduler_leaving() callback.

0 Kudos
4 Replies

Hi, thanks for the update. I just tried the Visual Studio project in VS2012 (after automatic conversion). There was a problem already reported with this conversion (related to asm files not supposed to be linked with /SEH ). Other than that, I just wanted to point that there is a problem with the .lib naming: in Debug mode, the lib is tbb.lib, while the target provided to projects using tbb as a dependency is tbb_debug.lib ( actually it's $(Output)$(TargetName) ) This leads to the user projects not being able to locate the lib file. Also, VS2012 reports:
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(1137,5): warning MSB8012: TargetPath(E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.dll) does not match the Linker's OutputFile property value (E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb_debug.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). 2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(1139,5): warning MSB8012: TargetName(tbb) does not match the Linker's OutputFile property value (tbb_debug). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). 2>Link: 2> Creating library E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.lib and object E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.exp 2> tbb.vcxproj -> E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.dll 2>FinalizeBuildStatus: 2> Deleting file "E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.unsuccessfulbuild". 2> Touching "E:\Projects\Games\NetRush\netrush_projects\ia32\Debug\tbb.lastbuildstate". 2> 2>Build succeeded.
I think it's a quick fix (that I'll do on my side) so I didn't want to make a full thread about it.

Thanks for pointing this out. We'll consider to resolve it.

This is not TBB problem, this is Visual Studio* conversion issue. Starting from 2010 version there is project property “Target Name” that didn’t exist before. So it is initialized to “$(ProjectName)” by default during conversion.
You can go to Project Properties ->Configuration Properties->General. There is setting “Target Name”. Change it from “$(ProjectName)” to “$(ProjectName)_debug” for each project in Debug configuration. Than go to Configuration Properties->Linker->General and set “Output File” property to “”.
You may read more about this conversion issue here:

Yes, I understand the problem, but I don't undersand why the previous release didn't have this problem, using the same conversion?