我使用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