0

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

4

1 回答 1

1

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

  1. 加载 x 个字节(x 取决于您的机器和实际实现)
  2. 操作这些字节中的特定位
  3. 将 x 字节保存在 bitset 的容器中。

这不是boost::dynamic_bitset具体的,它也涉及std::bitset例如。在这种情况下,您应该始终查看文档。由于文档没有提到明确的线程安全,您可能会遇到竞争条件。

所以你应该保护你的bitset。

于 2013-10-07T08:07:29.503 回答