Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
2421 Discussions

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?