我有一個parallized環和寫訪問std::map
。我想在地圖的不同部分在相同的時間,即我想要訪問地圖[a]和映射並[b]爲A,B不同。當我發現這是不可能的,但我想知道,如果有一個很好的選擇或如何以不同的方式實現這一目標!std :: map線程安全的替代方案?
1
A
回答
1
我可能是錯的,但我相信,修改現有的元素添加到地圖是安全的,只要你不接觸相同的元素(因爲這不會修改地圖的基礎結構)。所以,如果你插入的時候map[a]
和map[b]
未來,你的獨立的線程應該能夠修改這些現有的元素。
這就是說,它可能是更清潔和更安全的只是用一般的同步技術,如互斥來保護訪問地圖。
0
只要不改變下劃線map
,就很可能單獨變異map[a]
和map[b]
。
如果你想同時變異的關聯容器,從PPL或TBB退房concurrent_unordered_map
。
0
如果可能的話,你可以嘗試給每個工人自己的地圖的副本,然後將結果進行合併。這樣就不需要鎖定了。
相關問題
- 1. _vscwprintf的安全替代方案
- 2. 是從std :: map或std :: set線程安全的複製嗎?
- 3. java.awt.GraphicsConfiguration是否線程安全?有什麼替代方案
- 4. 是std :: map和std :: set線程安全嗎?
- 5. std :: string附加線程安全天真的解決方案?
- 6. std :: mutex的線程安全
- 7. C++ - std :: map替代方案不需要鑄造
- 8. 什麼操作在std :: map上是線程安全的?
- 9. std :: map和線程安全的奇怪問題
- 10. 設計問題:線程安全的std :: map
- 11. std :: vectors線程安全嗎?
- 12. std :: random_shuffle線程安全嗎?
- 13. 線程安全的替代File :: Tee?
- 14. 針對線程的chroot替代方案
- 15. 線程中斷的替代方案?
- 16. std :: map在C++ 11中插入線程安全嗎?
- 17. std ::向量,線程安全,多線程
- 18. WaitForMultipleObjects替代與STD ::線程?
- 19. pre-C++的std :: bind替代方案11
- 20. 子過程不是線程安全的,替代方法?
- 21. Hash Map的線程安全實現
- 22. 用std :: map :: begin調用std :: map :: erase是否安全?
- 23. std :: condition_variable是線程安全的嗎?
- 24. 帶線程安全std :: cout的死鎖
- 25. Java同步/線程安全/「集中」數組或其他線程將共享的替代方案
- 26. 安全重新分配std :: map :: value_type&?
- 27. 類型安全的替代方案中的AsyncTask
- 28. MySQL全文搜索的替代方案
- 29. 如何安全地在線程應用程序中使用std :: map?
- 30. pg_class.relhastriggers是「ALTER TABLE ... DISABLE TRIGGER USER」的安全替代方案嗎?
爲什麼不使用臨界區或互斥來保護訪問的std ::地圖? – armel
當你說「這不可能」時,你是什麼意思?你是怎麼弄出來的?你有可能有一個[SSCCE](http://sscce.org/)來顯示你做了什麼? –
@JoachimPileborg:你不能用一個SSCCE證明UB。這個陳述在C++ 11中是合理的。 – MSalters