Skip to Main Content
Intel Threading Building Blocks
book

Intel Threading Building Blocks

by James Reinders
July 2007
Intermediate to advanced content levelIntermediate to advanced
332 pages
10h 4m
English
O'Reilly Media, Inc.
Content preview from Intel Threading Building Blocks

CountStrings: Using concurrent_hash_map

The container concurrent_hash_map (Chapter 5) is similar to the associative containers of STL, but it permits concurrent accesses to its elements. The hash table provides a way to use associative arrays that allows you to store data indexed by keys of any type you desire. For this example, we will start with a program that uses a standard STL map (hash map) to count the occurrences of distinct strings in an array and uses the parallel_for template to run in parallel. Because the STL map is not thread-safe (STL containers are not thread-safe in general), synchronization is required to avoid corruption of the map when more than one thread tries to access it concurrently.

Example 11-27 shows our initial hybrid implementation. Step by step, we’ll examine how to replace the uses of the STL map with a Threading Building Blocks concurrent_hash_map. Because concurrent_hash_map is thread-safe, this will allow us to remove the coarse-grained synchronization using a native lock, which STL required.

Example 11-27. CountStrings using STL map with a coarse-grained lock

 1 #include "my_native_lock_wrappers.h" 2 #include <map> 3 #include "tbb/blocked_range.h" 4 #include "tbb/parallel_for.h" 5 #include "tbb/tick_count.h" 6 #include "tbb/task_scheduler_init.h" 7 #include <string> 8 #include <cctype> 9 10 using namespace tbb; 11 using namespace std; 12 13 LOCK_TYPE my_lock; 14 15 //! maps strings to ints. 16 typedef map<string,int> StringTable; 17 18 //! Function ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Intel® Xeon Phi™ Coprocessor Architecture and Tools: The Guide for Application Developers

Intel® Xeon Phi™ Coprocessor Architecture and Tools: The Guide for Application Developers

Rezaur Rahman

Publisher Resources

ISBN: 9780596514808Errata Page