【发布时间】:2015-09-21 09:40:11
【问题描述】:
我有一个主线程和一个工作线程。工作线程的代码如下所示:
thread = ::std::thread([this]() {
struct epoll_event events[50];
for (;;)
{
if (int const n =
epoll_wait(efd, events, 50, -1))
{
//...
我希望主线程中的close(efd) 会导致工作线程的epoll_wait() 调用返回,但它没有发生。如何退出工作线程的无限循环?
【问题讨论】:
-
您决不能在一个线程中释放资源,而另一个线程正在或可能正在使用它。你的外在问题是什么?你到底想做什么?
-
@DavidSchwartz +1 表示“外部问题”:-|
-
我想我可以使用 efd 作为标志来指示线程退出。如果超时为-1,我如何完全退出对
epoll_wait()的调用?给自己发信号?
标签: c++ linux multithreading