当只有一种类型的线程时,有没有一种方法可以使用条件变量进入睡眠状态?

时间:2020-02-17 23:42:28

标签: c

在我的一门课程中,我的教授要求我们实现一个小程序,该程序产生5个线程,并使用互斥锁检查相应轮换的线程。但是,他还要求我们使用条件变量,以避免忙于等待轮到他们。

乍看之下,这对我来说意义不大,因为我们不能保证任何信号都会唤醒正确的线程。除非无限可能的情况是每次都唤醒正确的睡眠线程,否则这似乎注定是一个死锁。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

您的教授为您提供了完成任务所需的信息。

乍一看,这对我来说意义不大,因为我们不能保证任何信号都会唤醒正确的线程。

是的,当您不在乎唤醒哪个线程时,例如,使用所考虑的设置。当您有一个工作池并且只需要一个空闲线程时,任何空闲线程即可将工作分配给该线程。

但是,如果您考虑一下,您会看到可以创建带有锁和条件变量的设置,这些设置会导致您所需的行为,即唤醒特定线程。

提示:条件变量具有notify_all

提示:或者,也可以有多个条件变量。

考虑一下,然后尝试其他尝试。