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

cha*_*m15 6 c windows winapi multithreading

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

Mar*_*mes 12

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

  • 我在仅限c的项目中使用了CreateEvent和WaitForSingleObject().此外,我已经使用内核模式等效设备驱动程序,并确认他是这样做的方式.+1 (4认同)