1

我有一个线程,我想(在特定的代码行)等待来自另一个线程的三个回调事件。只有在收到这三个事件之后,我才想继续前进。

我正在尝试使用信号量。我知道信号量可以在某个点被锁定,并且它一直等待直到它被其他线程释放。现在,问题是我想在释放信号量之前等待三个回调,而不仅仅是一个。我想过有一个计数器,但我不确定只有一个单独的计数器是否是线程安全的。那么有没有办法让信号量带有线程安全计数器?

这适用于 Linux 和 Windows。

谢谢。

4

1 回答 1

1

如果线程可以有可分配的数字,你也许可以只为每个控制线程设置一个布尔变量,然后检查是否在挂起的线程被释放之前都设置了。写一个字节可能是原子的。

然而,普通信号量会有原子计数器。

于 2013-03-04T06:16:54.300 回答