簡體   English   中英

從不同的線程訪問std :: map

[英]Access std::map from different threads

我讀過std::map不是線程安全的。 因此,如果我要從其他線程訪問(讀/寫) std::map ,是否應該將相關代碼包裝在關鍵部分?

注意:我正在使用Visual C ++ 2010。

簡單的答案:是的。 但是如何正確地做到這一點可能很棘手。 基本策略是將對map調用包裝在關鍵部分,包括包裝迭代器的生命周期。

但是,您還需要確保您的應用程序對地圖的假設也得到了謹慎處理。 例如,如果您需要從地圖中刪除許多相關項,請確保其他線程僅容忍那些丟失的某些項,或者將整個批處理操作包裝在Critsec中。 這很容易失控,因此您最終將大量代碼包裝在關鍵部分中,最終將導致死鎖和性能下降。 小心!

剛剛同時了一個問題。 底線:使用讀/寫鎖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM