在C++中,它是安全的在不同的線程使用一個std ::地圖或std :: vector的同時,如果你不插入,只是在做.find()操作就可以了?如果沒有插入並且只有.find(),在多線程上使用C++ STL容器是否安全?
回答
是。引擎蓋下沒有內存變化或緩存。
這是實現特定的,而不是由標準的保證。
哪個實現不起作用? – Jay 2010-01-27 17:51:53
我認爲sergiom在實踐中可能是正確的,但由於我找不到任何保證,我懷疑這不是我們可以依賴的。 – 2010-01-27 17:52:13
@Jay:原則上,容器可以推遲某些清理任務,直到稍後訪問。僅僅因爲容器被作爲邏輯const來訪問並不能保證它不會在引擎蓋下以一種線程不安全的方式翻轉一些位。 – 2010-01-27 17:53:31
當前的C++標準無關,對線程的主題說了,所以並沒有解決這個問題。但是,您特定C++標準庫實現的文檔應該覆蓋它。
從VC++(Visual Studio 2008)中,引用std容器:單個對象對於從多個線程讀取是線程安全的。例如,給定一個對象A,同時從線程1和線程2讀取A是安全的。 – Permaquid 2010-01-27 18:38:12
- 1. STL是否爲空()線程安全?
- 2. 修改STL容器的內容是否安全?
- 3. ValueStack容器是否線程安全?
- 4. 多線程與STL容器
- 5. 是NReco線程安全嗎?有沒有解決方法?在c#
- 6. C++ STL對於不同的容器是否是線程安全的(使用STLport實現)?
- 7. 在主線程被另一個線程寫入並且線程被加入後訪問變量是否安全?
- 8. 只有一個線程正在寫入時的線程安全
- 9. 是否帶有_scope線程安全?
- 10. Socket.SendAsync線程是否安全有效?
- 11. epoll是否有線程安全問題?
- 12. 有沒有辦法在多線程應用程序中安全地使用errno?
- 13. 是random_shuffle線程安全嗎?並使用rand_r如果不是
- 14. 以下代碼是否可重入且線程安全?
- 15. 是在boost還是stl線程安全的容器類似列表和unordered_maps?
- 16. STL中是否有排序的容器?
- 17. 如果沒有Web層並且沒有HTTP會話,CDI是否有意義?
- 18. 寫入線程安全容器
- 19. 什麼是沒有輸入並且沒有輸出的過程?
- 20. 插入C++ map STL容器失敗
- 21. 指向STL容器線程安全的指針(隊列/ Deque)
- 22. 同一類型線程的STL容器類安全嗎?
- 23. 如果我只有一個組件,在JFrame中使用AWT是否安全?
- 24. 是否有一個分配器使用alloca,否則C++ STL兼容?
- 25. C - 如何讓fscanf()確定它讀取的內容是否只有數字,並且沒有字符
- 26. 部分線程安全是否使Java類線程安全?
- 27. CFStringTransform線程安全且可重入嗎?
- 28. C#委託是否線程安全?
- 29. C#數組是否線程安全?
- 30. C++中是否有任何線程安全的圖形庫?
你正在做一個假設,即查找方法是不標準的所有實現有狀態的。當涉及到C++時,最好不要做出假設。 – JaredPar 2010-01-27 17:51:35