Windows线程可以使用SuspendThread()
暂停吗?
我可以从另一个中唤醒它,但它可以调用SuspendThread(GetCurrentThreadId())
吗?
答案 0 :(得分:7)
这似乎是可能的,但稍作修改(请参阅cygwin邮件列表讨论此here):
SuspendThread(GetCurrentThread());
我还发现MSDN说线程应该只挂起自己,但它并没有让我清楚。我引用(来自here,强调我的):
此功能主要供调试器使用。它不适用于线程同步。如果调用线程尝试获取挂起线程拥有的同步对象,则在拥有同步对象(如互斥锁或临界区)的线程上调用SuspendThread会导致死锁。为了避免这种情况,应用程序中的一个线程不是调试器应该通知另一个线程暂停。目标线程必须设计为监视此信号并做出适当的响应。
答案 1 :(得分:3)
是的,您可以在当前线程上使用SuspendThread
。 Good read on the topic。