取消阻塞的 Pthread
如果线程在 sem_wait()
上被阻塞,如何使线程响应 pthread_cancel()
?
How do I cause a thread to respond to pthread_cancel()
if it is blocked on a sem_wait()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以为将要阻塞的线程设置一个信号处理程序,例如 SIGUSR1,然后从另一个线程调用
pthread_cancel(tid)
和pthread_kill(tid, SIGUSR1)
代码>.一旦sem_wait()
被信号中断,线程就会被取消。You can set a signal handler, let's says for SIGUSR1, for the thread that will be blocking then, from another thread, you call
pthread_cancel(tid)
andpthread_kill(tid, SIGUSR1)
. The thread will be canceled oncesem_wait()
is interrupted by the signal.