Suppose I have:
stl::map<std::string, Foo> myMap;
is the following function thread safe?
myMap["xyz"] ?
I.e. I want to have this giant read-only map that is shared among many threads; but I don’t know if even searching it is thread safe.
Everything is written to once first.
Then after that, multiple threads read from it.
I’m trying to avoid locks to make this as faast as possible. (yaya possible premature optimization I know)
In theory no STL containers are threadsafe. In practice reading is safe if the container is not being concurrently modified. ie the standard makes no specifications about threads. The next version of the standard will and IIUC it will then guarantee safe readonly behaviour.
If you are really concerned, use a sorted array with binary search.