【发布时间】:2017-07-13 16:55:30
【问题描述】:
有没有办法实现一个由两个组件使用的锁,当由多个线程组成的第一个组件等待一个锁定的锁,而第二个组件接收到锁并解锁它时,这会通知所有其他等待的线程是吗?
它需要是跨平台的(它将用C实现)。
那么有没有办法设计这样的东西?
【问题讨论】:
-
如果这些线程仍在等待,发出信号有什么意义?
-
不要使用锁来做除锁以外的事情。如果要发送信号,请使用信号量、条件变量或其他适当的东西
-
这些线程只是等到第二个组件完成工作,完成后才能继续工作
-
如何使用信号量来实现?也许我错过了什么
-
我不确定我是否理解“由多个线程组成的组件”的概念。这是一个必须发出信号的线程组 A 而不是必须发出信号的线程组 B 吗?无论如何,我会指导您使用上面建议的条件变量。如果您使用的是 POSIX,那么您可以从“pthread_cond_broadcast”开始。其他库可能有等效的方法。
标签: c multithreading synchronization locking semaphore