在Linux中,有没有一种方法可以在不使用轮询/pthread_连接机制的情况下知道线程何时完成?

在Linux中,有没有一种方法可以在不使用轮询/pthread_连接机制的情况下知道线程何时完成?,linux,multithreading,Linux,Multithreading,是否可以等待某个fd或pthread_t并知道某个线程是否已完成?我主要寻找一些类似于select调用的机制,我们知道套接字被触发 我正在编写一个生产者-消费者问题的代码以供练习,我希望有一种干净的方法来知道一些工作线程何时完成,而不是等待每个线程使用pthread_连接 我可以使用某种共享内存数据结构/IPC/同步机制,但我想知道是否有更干净的方法。我更喜欢选择(但两者都是多路复用系统调用)。您可能想了解更多关于互斥量和条件变量的信息并使用它们。您将使用一些条件变量来表示已达到给定状态……您始

是否可以等待某个fd或pthread_t并知道某个线程是否已完成?我主要寻找一些类似于select调用的机制,我们知道套接字被触发

我正在编写一个生产者-消费者问题的代码以供练习,我希望有一种干净的方法来知道一些工作线程何时完成,而不是等待每个线程使用pthread_连接


我可以使用某种共享内存数据结构/IPC/同步机制,但我想知道是否有更干净的方法。

我更喜欢
选择
(但两者都是多路复用系统调用)。您可能想了解更多关于互斥量和条件变量的信息并使用它们。您将使用一些条件变量来表示已达到给定状态……您始终可以创建一个管道/套接字对,并在线程端对其进行写入。@ninjalj:我知道有这样的同步机制,但我不想知道这是否是常见的设计。这似乎是一种扭曲的做事方式。只有当您已经
select()/poll()
ing处理其他事件时,我才会使用管道,以便将等待与主循环集成(这个技巧经常用于将信号转换为可轮询事件)。否则,条件变量是相当标准的。@BasileStarynkevitch:为什么不把那个注释作为一个答案呢?:)