4

Windows 线程可以用 挂起自己SuspendThread()吗?

我可以从另一个人中唤醒它,但是,它可以打电话SuspendThread(GetCurrentThreadId())吗?

4

2 回答 2

7

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

SuspendThread(GetCurrentThread());

我还发现 MSDN 说一个线程应该只暂停自己,但它并没有让我清楚。我引用(从这里,强调我的):

这个函数主要是为调试器设计的。它不打算用于线程同步。如果调用线程试图获取挂起线程拥有的同步对象,则在拥有同步对象(例如互斥锁或临界区)的线程上调用 SuspendThread 可能会导致死锁。为避免这种情况,应用程序中不是调试器的线程应向其他线程发出信号以挂起自身。目标线程必须设计为监视此信号并做出适当的响应。

于 2013-07-31T09:14:18.767 回答
3

是的,您可以SuspendThread在当前线程上使用。很好地阅读了这个主题

于 2013-07-31T09:21:58.767 回答