Intel® Threading Building Blocks

Can a flow graph be build through multiple classes?



I am still a bachelor student, and I am doing my internship at this moment. I started learning TBB for my project. And I just love TBB, the ease of use compared to the manual thread handling.

But now I am wondering if it is possible with TBB Flow Graph to split up the code to build the graph through multiple classes. To make predefined graph structures that would repeat them self often. Ex. three serial function nodes, processing different objects, calculations, etc ...

Problems with using parallel_do

Hello. I've got next problem with using parallel_do: it even fails to compile if i pass std::bind result:

In file included from D:\Projects\MyProject\src\server.cpp:4:0:

D:/libs/tbb43_20150209/include/tbb/parallel_do.h: In instantiation of 'void tbb::parallel_do(Iterator, Iterator, const Body&) [with Iterator = long long unsigned int; Body = std::_Bind<void (*(std::_Placeholder<1>))(int&)>]':

Errors in tbb interface and concurrent_unordered_impl

I had successfully compiled my code 6 months back with TBB version 3, but now when I try with version 4 or 3, it gives the errors as shown below.
Please help, as I'm stuck with this for 4 days already.

Am using Linux localhost.localdomain 2.6.32-431.el6.x86_64
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)

TBB version 4:
On using /usr/local/tbb43_20150316oss/include

[aarch64][patch] Enable GCC builtin intrinsics (__sync_*) on Clang


Clang supports GCC builtin intrinsics (__sync_*) used for atomics. I tested master branch and Clang 3.5 in Fedora 21 on x86_64 and aarch64 machines. include/clang/Basic/Builtins.def from Clang contained every intrinsic used in TBB. I compiled TBB (current version, tbb43_20150316oss) on x86_64 with Clang with -DTBB_USE_GCC_BUILTINS=1  and it compiled. I seems Clang isn't fully maintained and some tests fail even on x86_64. Similar tests failed on aarch64 (plus one additional).

parallel task with several parallel stages

I have an algorithm that can be parallelised using the divide-and-conquer approach, but requires more than one parallel stage per task. In other wordsk, a given task can be split into several consecutive stages which cannot be done in parallel, but each stage can potentially be split into several parallel tasks. I have implemented this as sketced below.

spawn with enqueue


I want to exclude main thread. I have a longrunning work that should run independent of main thread. Also, the longrunning work has to work by splitting it multiple tasks. I have tried to create a root task and enqueue it. Afterwards, the root task spawned the child tasks.

For example,

longtask *root_task = new(task::allocate_root())longtask();


class longtask


         task* execute()


        set_ref_count(m_task_count + 1);

Iscriversi a Intel® Threading Building Blocks