Intel® Threading Building Blocks (Intel® TBB) provides a wrapper around the platform's native threads, based upon the N3000 working draft for C++11. Using this wrapper has two benefits:
It makes threaded code portable across platforms.
It eases later migration to ISO C++11 threads.
The library defines the wrapper in namespace std, not namespace tbb, as explained in Section Namespace.
The significant departures from N3000 are shown in the table below.
N3000 |
Intel® TBB |
---|---|
template<class Rep, class Period> std::this_thread::sleep_for( const chrono::duration<Rep, Period>& rel_time) |
std::this_thread::sleep_for( tick_count::interval_t ) |
rvalue reference parameters |
Parameter changed to plain value, or function removed, as appropriate. |
constructor for std::thread takes arbitrary number of arguments. |
constructor for std::thread takes 0-3 arguments. |
The other changes are for compatibility with the current C++ standard or Intel® TBB. For example, constructors that have an arbitrary number of arguments require the variadic template features of C++11.
Threads are heavy weight entities on most systems, and running too many threads on a system can seriously degrade performance. Consider using a task based solution instead if practical.