终止阻塞的pthreads线程

std*_*all 1 c c++ linux pthreads file-descriptor

我有一个线程从文件描述符中读取数据,使用select()阻塞直到数据可用.当程序需要终止时,我需要关闭该线程,但是它在select时被阻止.

我的问题是,通过关闭文件描述符来通知线程关于我终止意图是一个好习惯吗?

有没有更好的方法来通知线程?我知道总有一个选项可以使用信号,但是我已经在某些地方看到了这些信号pthreads并不能很好地协同工作.

Som*_*ude 5

那么您可以使用管道,并将其添加到您的读取集.当线程终止时,在管道上发送一个字节.

或者在select通话时超时,超时时检查终止标志.

  • @Mellowcandle你可能有一毫秒的超时,它仍然不会在CPU负载上引起注意. (4认同)