After much hard work, extensive debate, prioritization, and efforts to eke out the last few percentages of performance gains, Intel® Threading Building Blocks (Intel® TBB) version 3.0 has arrived! With it come several new features and improvements, available now for download.



In the upcoming weeks, look for detailed blogs from the TBB developers on several of these topics, starting with Arch Robison who will discuss making the quick and painless transition to Intel® TBB 3.0. Intel® TBB 3.0 fully preserves binary compatibility and thus simple library substitution, even without re-linking, should work for most applications. Arch will discuss the very few exceptions to this rule in his blog.



Here’s a brief summary of the major changes since the release of version 2.2:



Extended compatibility and interoperability support

• Added support for Microsoft* Visual Studio* 2010

• Intel® TBB 3.0 can run on top of Microsoft* Concurrency Runtime on Microsoft* Windows* 7

• Added Microsoft* Parallel Patterns Library*-compatible critical_section and reader_writer_lock

• Apple* Snow Leopard* support

• C++0x feature support: Intel® TBB 3.0 now provides std::thread, std::lock_guard, std::unique_lock, and most of std::condition_variable



New and improved parallel pipeline

• Elegant new parallel_pipeline function provides a strongly-typed lambda-friendly pipeline interface



New and improved data containers

• New concurrent_unordered_map, an associative container that permits concurrent insertion and traversal with no visible locking; similar to C++0x std::unordered_map; based on a prototype developed at Microsoft for a future version of PPL

• Faster enumerable_thread_specific and combinable



Enhanced task scheduler features

• Fire and forget tasks: To start worker tasks from a GUI, process tasks in FIFO-like fashion and increase starvation-resistance of tasks, see the new task::enqueue method

• Independent task scheduling for foreign threads: the scheduler maps tasks to threads in a way that avoids causing a user-created thread to block directly or indirectly on another user-created thread

• A task_group_context can now be created and destroyed in different threads



Enhanced scalable memory allocator

• More reliable dynamic function substitution on Windows*

• Improved performance for large object allocation



New Design Patterns Manual

• Get the most out of Intel® TBB: This excellent resource, for everyone from the novice to the expert, illustrates the power of Intel® TBB for implementing common parallel programming design patterns