我使用boost :: dynamic_bitset來跟蹤多個tcp連接。如果連接,則設置爲1,否則設置爲0.每個連接都是一個線程。我是否需要保護多線程中的位集?或者它沒有必要,因爲它在創建之後不會修改位集的大小?boost :: dynamic_bitset多線程問題
0
A
回答
1
在bitset中工作時,實際操作單個位是非常罕見的。通常情況下,下面的事情發生了:
- 負載x字節(X取決於你的機器和實際執行上)
- 操縱特定位在此位集的容器,這些字節
- 保存x字節。
這不是boost::dynamic_bitset
具體,它也涉及std::bitset
例如。你應該總是看看這種情況下的文檔。由於documentation沒有提到明確的線程安全性,因此您可能會遇到競爭狀況。
所以你應該保護你的bitset。
+0
謝謝。沒有使用bitset,有沒有更好的方法沒有使用鎖?使用原子整數。 –
+0
@MichaelD:這取決於你的數據結構。如果您將連接組織爲'class/struct Connection',則可以簡單地向它們添加一個原子布爾/標誌成員'alive'。您也可以使用一組原子變量(例如'std :: vector
相關問題
- 1. 使用boost :: dynamic_bitset :: to_ulong()
- 2. boost線程pthread_mutex_lock問題
- 3. Boost可選Boost線程編譯問題
- 4. 的boost ::線程 - 線程創建問題
- 5. 多線程線程切換問題
- 6. Boost多線程
- 7. 多線程問題
- 8. boost :: dynamic_bitset如何存儲位
- 9. boost uint16的dynamic_bitset拷貝位
- 10. 爲什麼boost :: dynamic_bitset模板?
- 11. Visual Studio Boost線程/ MT鏈接問題
- 12. C++ Boost :: ASIO線程池問題
- 13. 在boost線程池庫中的問題
- 14. 多線程問題
- 15. 多線程問題
- 16. 多線程問題
- 17. 多線程問題
- 18. 多線程問題
- 19. 多線程問題
- 20. 多線程問題
- 21. boost ::線程和std ::線程兼容性問題?
- 22. boost :: shared_mutex vs boost :: mutex多線程寫入?
- 23. boost或openMP多線程?
- 24. 「沒有這樣的文件」包括問題與提升dynamic_bitset
- 25. 如何在C++中使用boost :: dynamic_bitset
- 26. 在extconf.rb中需要boost :: dynamic_bitset <>
- 27. 通過迭代一個boost ::來,dynamic_bitset
- 28. 在C++中創建boost dynamic_bitset向量
- 29. 從boost提取的動態子集dynamic_bitset
- 30. 在Ubuntu中編譯C++ boost dynamic_bitset代碼
取決於implmentation,但可能是因爲hw不存儲/讀取單個位。 – NoSenseEtAl