At the moment we have several parallel building blocks to make it easier for us to write parallel code. We have parallel_for, parallel_while and so on.
Can you tell us something more about what kind of building blocks are being worked on for the future?
The 2.2 version of Intel Threading Building Blocks (available now) has several new parallel algorithms. These include parallel_for_each and parallel_invoke. Support for C++0X lambda functions has also been added. There is also a fourth concurrent container: concurrent_bounded_queue.
The parallel_while was changed over to parallel_do and the need for an explicit range object has been removed from the parallel_for.
Last edited by Brad Jones; April 19th, 2010 at 10:08 AM.
Reason: fixed spelling typo
Interesting. From the sound of it, it seems that quite of few of the building blocks available in the ITBB match those available in the latest Visual C++ 2010 Parallel Patterns Library, like parallel_for, parallel_for_each, parallel_invoke. I was wondering if there is maybe some data available to see whether the ITBB or the MS PPL is recommended in certain cases?
As for what came first or who had the idea that was copied by the other, I think we're talking a chicken and egg question. In most cases, after an idea has been vetted as being something useful, lots of adoption will be seen. This is one reason we get so many movie sequels or disaster films or super-hero movies all coming out at about the same time.
I don't have any guide as to which library should be used the other except in limited circumstances. If you're developing on Linux, you would want TBB. If you're doing things with .NET, I think PPL is better suited.
That last one may not be as hard and fast as I think. I've heard many MS folks talk about VS 2010 and what is going to be available within the IDE. They all semed to focus on their tools being geared toward .NET. Thus, the Intel tools and VS 2010 would complement each other and give Windows programmers a wide range of support and choice.