Intel® Threading Building Blocks

Invalid cxx_rvalue_references feature detection with clang.

It is impossible to use construct method from allocators with variadic template.

In TBB v4.3 Update 2 rvalue reference support is detected next way:

    #define __TBB_CPP11_RVALUE_REF_PRESENT             (__has_feature(__cxx_rvalue_references__) && (__TBB_GCC_VERSION >= 40300 || _LIBCPP_VERSION))

I'm using clang 3.6 from sources and not using libcpp, thus it is false. Also _TBB_GCC_VERSION is 4.2.1, so it is less than 40300. So rvalue reference is actually supported by my compiler, but detected as not supported in tbb_config.h.

HLE examples

Are there any examples codes that show an actual speedup using HLE (or tbb::speculative_spin_mutex)?

I have some experimental code running on a Haswell where the HLE flag is set when checked with cpuid, so I suppose HLE is enabled (I read that the feature HLE was disabled because of some problems but I don't think my target machine has the update requird to disbale the feature but IÄm not do I check if HLE is really enabled??)

Performance issue of scalable_realloc() vs. glibc realloc()


I have an application that initially allocates a 4MB block of memory and linearly grows this block using 4MB steps. glibc's realloc() handles this pattern quite well. Linking against tbbmalloc_proxy (or replacing glibc realloc() with scalable_realloc()) degrades performance very badly.

Execution Time variations


I am a naive user. Recently I have been studying regarding Threading Building Blocks. I tried executing the Fibonacci program and the results were obtained in milliseconds. When I execute the same program in Java using multithreading, I got the result in nano seconds. Can anyone tell me the reason behind such a huge variation?




Starting a pipeline with thread_bound_filter


I am trying to parallelize an algorithm that accepts a callback and looks like this:

class Object;

class MyCallback
virtual void NotifyAboutCompletion (Object* o) = 0;


void Foo (Object* o, size_t n, MyCallback* c)
   for (size_t i = 0; i < n; ++i) {
     DoSomeHeavyWork (o);
     c->NotifyAboutCompletion (o);


Подписаться на Intel® Threading Building Blocks