如何在Windows中使用C创建可中断睡眠?

时间:2013-01-26 16:49:19

标签: c windows multithreading winapi

我希望当前线程在给定时间内休眠。但是,另一个线程应该能够中断它并提前唤醒它。在unix中,使用sleep + pthread_kill非常简单。在Windows中,有SleepExSleepConditionVariableCS。 SleepEx似乎并没有真正导致线程休眠,因为它仍在处理事件,所以睡在条件变量上是一个更好的解决方案吗?此外,我有点不清楚如何唤醒SleepEx睡眠的线程。这个问题的正确解决方案是SleepEx还是SleepConditionVariableCS? (另外,您是否可以指出如何唤醒使用SleepEx睡眠的线程?MSDN文档非常混乱。

1 个答案:

答案 0 :(得分:12)

创建手动重置event并使用WaitForSingleObject等待 - 具有超时参数。有关详细信息,请参阅MSDN。