我有一个线程,我想等待(在特定的代码行)来自另一个线程的三个回调事件。只有在收到这三个事件之后,我才想继续前进。
我正在尝试使用信号量。我知道信号量可以被锁定在一个点上并且一直等待它被其他线程释放。 现在,问题是我想在发布信号量之前等待三次回调而不是一次。 我想过有一个计数器,但我不确定是否只有一个单独的计数器是线程安全的。 那么有一种方法可以获得一个带有线程安全计数器的信号量吗?
适用于Linux和Windows。
感谢。
答案 0 :(得分:1)
如果线程可以有可分配的数字,那么每个控制线程可能只有一个布尔变量,然后检查是否在释放挂起的线程之前设置了所有线程。写一个字节可能是原子的。
然而,正常的信号量会有原子计数器。