Lig*_*ica 3 c++ signals pthreads c++11
我的程序具有通过处分事件循环epoll(对于I/O)和条件变量(对于其它消息活性),以及一个工作线程负责捕获信号(SIGINT,SIGTERM,SIGHUP).SIGINT,SIGTERM,SIGHUP而SIGPIPE被阻挡在所有其他线程.
我的epoll_wait调用有500ms的超时,但是我试图减少上下文切换并使用无限epoll_wait代替,当主线程决定退出程序并且应该停止事件循环时,通过管道活动唤醒.
同样地,我的sigtimedwait呼叫有500毫秒超时(并std::atomic<bool>在每次呼叫后检查一次,看是否需要停止),并且我想用不需要保持醒来检查中断的东西来替换它.
我可以从主线程向信号监视线程发出信号来实现这一点,或类似的东西吗?或者在这个时代有没有更好的方法来捕捉信号?
这是在CentOS 6和7上(虽然一般的POSIX解决方案是首选 - 仅仅是标准C++ 11的奖励积分!).
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |