我有一个pthread对某些文件描述符进行无限轮询,并带有负超时参数。如何从主线程中优雅地阻塞pthread退出?
从主线程,我希望能够向轮询线程表明它应该退出。
我做了一些研究,发现了以下方法:
使用pthread_cancel可以():这是气馁,因为这可能导致不清除任何保留的资源或互斥
使用的意想不到的后果一个变量作为标志并将其设置在主线程中。轮询线程每次迭代检查该标志,如果设置,则通过调用pthread_exit()退出。这种方法是行不通的,因为我的轮询线程不循环,而是无限期地阻塞,等待文件描述符。
任何人都可以提出一个优雅的解决方案来解决这个问题吗?
谢谢! ASM
添加一个eventfd到你信号终止的混音? –
这是一个很好的建议。我可以尝试。谢谢! –