这里需要建议:哪个STL容器的操作被认为是只读的?以vector<int>
为例,可以安全地说任何不改变底层int数据的操作都是只读的吗?我正在编写一个多线程程序,但不太确定是否可以通过引用/指针传递容器的线程安全。
之间,同样的规则也适用于basic_string吗?任何推荐的资源有助于快速了解STL容器的内部机制?感谢。
答案 0 :(得分:1)
顺便提一下,标准对容器的安全性一无所知。但是标有const
的方法可以保证不会修改容器。*
如果线程同时读取和写入数据,则需要同步它们。
**逻辑修改,即。虽然我不知道任何容器,但任何可变成员都可以改变const方法。*
答案 1 :(得分:1)
声明const的方法很可能不会修改容器,尽管你无法确定。
在多线程应用程序中使用STL容器时,您需要一个外部同步机制。 C ++标准库不是线程安全的,并且在没有同步的情况下从多个线程使用任何将导致未定义的行为,假设其中一个线程更改了向量对象的状态。
答案 2 :(得分:0)
在stl容器上运行时,在多线程线程环境中使用pthread读写锁。他们非常有效率。 pthread read -write locks的参考:
答案 3 :(得分:0)
标准中唯一提到的是