pthreads - 加入一组线程,等待一个退出

Mik*_*ike 4 c posix pthreads

在POSIX线程接口中,pthread_join(thread)可以用来阻塞,直到指定的线程退出.

是否有类似的函数允许执行阻止,直到任何子线程退出?

这类似于wait()UNIX系统调用,除了适用于子线程,而不适用于进程

Tha*_*tos 7

我认为这不是直接可以从pthreads本身,但你可以很容易地解决它.

使用pthreads API,您可以使用pthread_cond_wait和朋友设置"条件"并等待它.线程即将退出时,通知该条件以唤醒等待线程.

或者,另一种方法是创建一个管道pipe,当一个线程要退出时,write管道.有主线程等待管道的另一端有两种select,poll,epoll,或者你喜欢的变体.(这也允许您在其他FD上同时等待.)

较新版本的Linux还包含用于执行相同操作的"eventfds",请man eventfd注意,但请注意,这只是最近才添加的.请注意,它不是POSIX,它只是Linux,只有在您合理的最新版本时才可用.(2.6.22或更高.)

我个人总是想知道为什么这个API不是为了处理类似于文件描述符的东西而设计的.如果是我,他们就是"事件",你可以select文件,线程,计时器......