繁体   English   中英

是否有必要锁定STL容器以读取其数据?

[英]Is it necessary to lock around STL containers in order to read their data?

我正在编写一个多线程服务器,它包含5或6个全局数据结构(映射,向量等),并试图弄清楚我是否需​​要为某些数据保存互斥锁,以便从地图或向量中读取值,或者,当我要更改数据/添加新项目时,只需要持有互斥锁。

如果多个线程正在访问容器并且至少有一个线程正在修改容器的内容,则需要同步对容器的访问。 如果没有任何线程修改容器的内容,则不需要同步对它的访问。

[请注意,C ++语言标准没有提到线程(至少尚未提及),因此不要求容器可以从多个线程中使用。 也就是说,我上面所说的至少对于标准库的所有主要实现都是如此,并且是即将推出的C ++语言标准的C ++ 0x修订版中的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM