簡體   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