一个线程可以调用SuspendThread传递自己的线程ID吗?

时间:2013-07-31 09:05:36

标签: windows multithreading winapi

Windows线程可以使用SuspendThread()暂停吗?

我可以从另一个中唤醒它,但它可以调用SuspendThread(GetCurrentThreadId())吗?

2 个答案:

答案 0 :(得分:7)

这似乎是可能的,但稍作修改(请参阅cygwin邮件列表讨论此here):

SuspendThread(GetCurrentThread());

我还发现MSDN说线程应该只挂起自己,但它并没有让我清楚。我引用(来自here,强调我的):

  

此功能主要供调试器使用。它不适用于线程同步。如果调用线程尝试获取挂起线程拥有的同步对象,则在拥有同步对象(如互斥锁或临界区)的线程上调用SuspendThread会导致死锁。为了避免这种情况,应用程序中的一个线程不是调试器应该通知另一个线程暂停。目标线程必须设计为监视此信号并做出适当的响应。

答案 1 :(得分:3)

是的,您可以在当前线程上使用SuspendThreadGood read on the topic