【发布时间】:2011-09-07 17:55:42
【问题描述】:
我在网上发现了相互矛盾的信息: http://www.sgi.com/tech/stl/thread_safety.html
STL 的 SGI 实现仅在以下意义上是线程安全的 同时访问不同的容器是安全的,并且 对共享容器的同时读取访问是安全的。如果 多个线程访问单个容器,并且至少有一个线程 可能会写,那么用户有责任确保 容器访问时线程间的互斥。
http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_concurrency.html
用户代码必须防止并发方法调用,这可能 访问任何特定库对象的状态。通常情况下, 应用程序程序员可以推断必须持有哪些对象锁 在方法调用中引用的对象上。没有进入伟大的 详细,这里是一个需要用户级锁的例子:
只要在多线程程序中使用所有库对象都是安全的 因为每个线程小心地锁定任何其他线程的访问,而它 使用对另一个线程可见的任何对象,即处理库对象 像任何其他共享资源一样。一般来说,这个要求包括 对对象的读写访问;除非另有记录为 安全,不要假设两个线程可以访问一个共享标准 库对象。
我把重要的部分加粗了——也许我不明白他们的意思,当我阅读对象状态时,我想到了 STL 容器
【问题讨论】:
标签: c++ gcc stl thread-safety