boost :: dynamic_bitset多线程问题

时间:2013-10-07 08:03:51

标签: c++ boost

我使用boost :: dynamic_bitset来跟踪几个tcp连接。如果已连接,则将其设置为1,否则将其设置为0.并且每个连接都是一个线程。我是否需要保护多线程的位集?或者没有必要,因为它在创建后不会修改位集的大小?

1 个答案:

答案 0 :(得分:1)

在bitset中工作时,实际操作单个位的情况非常罕见。通常会发生以下情况:

  1. 加载x个字节(x取决于您的计算机和实际实现)
  2. 操纵这些字节中的特定位
  3. 将x字节保存在bitset的容器​​中。
  4. 这不是boost::dynamic_bitset特定的,例如也涉及std::bitset。在这种情况下,您应该始终查看文档。由于documentation未提及明确的线程安全性,因此您可能会遇到竞争条件。

    所以你应该保护你的位置。