【发布时间】:2016-08-24 00:30:55
【问题描述】:
我有一个 pthread 对某些文件描述符进行无限轮询,超时参数为负。
从主线程,我希望能够向轮询线程指示它应该退出。
我做了一些研究,发现了以下方法:
使用 pthread_cancel():不鼓励这样做,因为它可能会导致不清除任何持有的资源或互斥体的意外后果
使用变量作为标志并在主线程中设置。轮询线程在每次迭代时检查此标志,如果设置,则通过调用 pthread_exit() 退出。这种方法行不通,因为我的轮询线程不会循环,而只是无限期地阻塞,等待文件描述符。
谁能为这个问题提出一个优雅的解决方案?
谢谢! ASM
【问题讨论】:
-
将 eventfd 添加到您发出终止信号的混音中?
-
这是一个不错的建议。我可以试试。谢谢!
标签: c multithreading pthreads blocking