|
Boost Users : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2006-10-05 03:26:36
Hello Prashant,
Prashant Thakre ha escrito:
> Hi,
> As per the section "Complexity and exception safety":
> Iterator and reference validity is preserved in the face of insertions, even
> for replace and modify operations.
Please note that exception safety is in no way related to thread safety.
> Would it be safe to insert() from within two or more threads simultaneously ?
> Assumption being that the keys inserted will be always be different.
No, it is not safe to insert from two threads into the same container. The
thread safety guarantees aplying to Boost.MultiIndex (and to most STL
implementations as well) are:
1. Concurrent access to different containers is safe.
2. Concurrent read-only access to the same container is safe
All other forms of concurrent access are *not* safe, for instance:
* Concurrent write access to the same container (your scenario) is
not safe.
* One thread writes to a container and other(s) read(s) from the same
container: not safe either.
So you've got to synchronize access to the container as appropriate
to your app semantics.
> regards,
> Prashant Thakre
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net