S
Scott Meyers
Although C++0x includes support for concurrency, it offers no standard
containers that support simultaneous readers and writers. Java and .NET
developers have them as part of their standard libraries (e.g., Java's
Concurrent HashMap and ConcurrentLinkedQueue, .NET's ConcurrentQueue and
ConcurrentBag), but, from what I can tell, there don't even seem to be any de
facto standard concurrent containers for C++ developers. For example, Boost
doesn't seem to offer any.
The closest thing I can find to a portable cross-platform API for concurrent
containers are concurrent_vector and concurrent_queue offered independently by
Intel via TBB and Microsoft via PPL, but where both companies have pledged to
offer "identical concurrent STL container solutions" (per
http://tinyurl.com/2cgr22p). (That same page suggests that Intel and MS both
also offer concurrent_unordered_map, but that container is not listed at the PPL
web site (http://msdn.microsoft.com/en-us/library/dd504906.aspx)).
If I'm a cross-platform C++ developer who wants to take advantage of the work
others have done to develop, debug, and tune a concurrent container (i.e., I
don't want to write and maintain my own), what are my choices? Obviously, the
container I choose will depend on the problem I'm trying to solve, but what's on
the pre-built cross-platform concurrent container menu?
Thanks,
Scott
containers that support simultaneous readers and writers. Java and .NET
developers have them as part of their standard libraries (e.g., Java's
Concurrent HashMap and ConcurrentLinkedQueue, .NET's ConcurrentQueue and
ConcurrentBag), but, from what I can tell, there don't even seem to be any de
facto standard concurrent containers for C++ developers. For example, Boost
doesn't seem to offer any.
The closest thing I can find to a portable cross-platform API for concurrent
containers are concurrent_vector and concurrent_queue offered independently by
Intel via TBB and Microsoft via PPL, but where both companies have pledged to
offer "identical concurrent STL container solutions" (per
http://tinyurl.com/2cgr22p). (That same page suggests that Intel and MS both
also offer concurrent_unordered_map, but that container is not listed at the PPL
web site (http://msdn.microsoft.com/en-us/library/dd504906.aspx)).
If I'm a cross-platform C++ developer who wants to take advantage of the work
others have done to develop, debug, and tune a concurrent container (i.e., I
don't want to write and maintain my own), what are my choices? Obviously, the
container I choose will depend on the problem I'm trying to solve, but what's on
the pre-built cross-platform concurrent container menu?
Thanks,
Scott