Re: Subtle MT problem with __gnu_cxx::hash_map

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Nov 19, 2004, at 12:21 PM, Paul Dubuc wrote:

There's a subtle thread safety problem with hash_map that was found in our testing recently. It's understood that operator[] is a non-const method since it can insert an element into a container if one is not found with the given index.

In our case we were using operator[] to access a hash_map that had been fully populated. Each index we were using did have an entry in the hash_map. So we were accessing elements in the map with operator[] using multiple threads thinking that this would be a thread safe, const operation. This is implied by the statement "simultaneous read accesses to to shared containers are safe" in the SGI STL user's guide (http://www.sgi.com/tech/stl/thread_safety.html).

But operator[] isn't read access. It's defined to be equivalent to a certain form of insert().


			--Matt


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux