KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want access a STL based container read-only from parallel running threads. Without using any user implemented locking. The base of the following code is C++11 with a proper implementation of the standard. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html http://www.sgi.com/tech/stl/thread_safety.html http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/threadsintro.html http://www.open-std.org/jtc1/sc22/wg21/ ( current draft or N3337 , which is essentially C++11 with minor errors and typos corrected) 23.2.2 Container data races [container.requirements.dataraces] For purposes of avoiding data races (17.6.5.9), implementations shall consider the following functions to be const: begin, end, rbegin, rend, front, back, data, find, lower_bound, upper_bound, equal_range, at and, except in associative or unordered associative containers, operator[]. Notwithstanding (17.6.5.9), implementations are required to avoid data races when the contents of the con- tained object in different elements in the same sequence, excepting vector<bool>, are modified concurrently. [ Note: For a vector<int> x with a size greater than one, x[1] = 5 and *x.begin() = 10 can be executed concurrently without a data race, but x[0] = 5 and *x.begin() = 10 executed concurrently may result in a data race. As an exception to the general rule, for a vector<bool> y, y[0] = true may race with y[
Tags (comma-separated)
Save Edits
Cancel