c++ - Windows 线程 sleep 并从另一个线程唤醒

标签 c++ windows multithreading

我有一个线程在一个类中运行,我想让自己进入休眠状态,并在另一个线程唤醒它时唤醒,如果可能的话,不传递互斥锁或其他元素,所以它是自包含的。

基本上,我已经尝试过在调用 WaitForSingleObject 两次的线程中使用互斥锁的方法,期望它使互斥锁在第一次调用时不发出信号,但每次函数返回 0,因为互斥锁已经发出信号并且线程是互斥锁的所有者,并且仍然是所有者。例如,我希望一旦进入休眠状态,就会调用一个类方法来释放互斥量。

在 Windows 中是否有一个简单的方法来解决这个问题,或者我会被迫打破封装吗?运行

最佳答案

虽然 Waitable 句柄方法通常是处理此任务的首选方法,但您始终可以使用 SuspendThread/ResumeThread 来执行您尝试执行的操作,而无需使用 WaitForSingleObject/WaitForMultipleObjects。

这两个函数都获取要休眠或唤醒的线程的句柄。

关于c++ - Windows 线程 sleep 并从另一个线程唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948494/

相关文章:

java - 如何检查线程是否正在 hibernate ?

c++ - 将带有 unique_ptr 的可变 lambda 传递给 const& std::function

c++ - 从正在运行的程序中读取值

.net - Windows 如何区分常规 EXE 和 .NET exe?

c++ - std::lock_guard() 用于锁定的 std::mutex

java - Java 方式的生产者/消费者模式

c++ - 为什么捕获变量会使 lambda 的类型唯一?

c++ - 编辑期间的 QTableWidgetItem text() 属性

c++ - 我将如何着手将天空盒应用于世界,openGL C++

c++ - 为在非管理员用户帐户中运行的进程创建防火墙规则