我正在尝试移植一个依赖SIGCONT来停止应用程序的某些线程的代码。对于目前的linux nptl实现,在2.6.x内核中似乎不能依赖于此。我正在尝试设计一种方法来阻止其他线程。目前我只能考虑互斥和条件变量。如有任何提示,欢迎光临。
发布于 2010-04-20 05:49:50
如果您依赖于停止和恢复其他线程,那么您的应用程序最终将失败。
这是因为,你不能保证你不会停止一个线程,因为它有一个互斥锁来保护共享资源。这将导致死锁,因为需要等待互斥锁的任何其他线程(可能包括停止第一个线程的线程)将永远等待。
我相信这是可能的,但同时,你做错了。
注意:这样的互斥锁可能存在于C库的某些部分,即使你自己的代码中没有。如果你在自己的代码中没有这样的代码,而且它不是微不足道的,我会感到惊讶。
发布于 2010-04-19 21:57:52
如何向目标线程发送信号?如果您使用pthread_kill()将SIGSTOP / SIGCONT发送到单个线程,它应该可以工作。
https://stackoverflow.com/questions/2666059
复制相似问题