我正在尝试移植依赖于SIGCONT的代码来停止应用程序的某些线程。使用当前的linux nptl实现似乎不能依赖2.6.x内核中的那个。我正在尝试设计一种方法来阻止其他线程。目前我只能考虑互斥锁和条件变量。任何提示都表示赞赏。
答案 0 :(得分:1)
如果您依赖停止并恢复其他线程,那么您的应用程序最终将失败。
这是因为,您无法保证在保护共享资源时使用互斥锁时不会停止某个线程。这会导致死锁,因为任何其他线程(可能包括停止第一个线程的线程)然后需要等待互斥锁,将永远等待。
我确信这是可能的,而且,你做错了。
注意:这些互斥锁可能存在于C库的某些部分,即使您自己的代码中没有。如果你自己的代码中没有,并且它是非常重要的,我会感到惊讶。
答案 1 :(得分:0)
您如何将信号发送到目标线程?如果您使用pthread_kill()
将SIGSTOP
/ SIGCONT
发送到单个帖子,则应该有效。