linux多线程编程中如何等待过个线程退出

linux多线程编程中,如果线程A创建了线程B,我知道用pthread__ join可以令线程A
阻塞然后等待线程B的退出。如果线程A创建了三个线程B,C,D,执行完的先后顺序不知。想让A必须等待三个线程都退出后再退出,应该怎么做?
连用pthread__join三次吗???但是第一次用了pthread__join后,A不就阻塞了吗?

4个回答

既然等待3个线程都退出,这样做应该是可以的,反正你不在乎谁先退出的,比如依次等待abc,阻塞了,a处理完,主线程解除阻塞状态再等待b,然后是c,这个思路我曾经在Windows下测试过(用好几个Windows提供的WaitForSingleObject等待多个线程),是可以的,Linux应该也可以

zuishikonghuan
zuishikonghuan 回复Cirfe: 呜,Linux的信号能不能满足你,如果不能,就自己实现一个Windows的消息机制吧
大约 5 年之前 回复
zuishikonghuan
zuishikonghuan 回复Cirfe: 要么就等待的时候sleep一会,不过那样的话精度会下降
大约 5 年之前 回复
zuishikonghuan
zuishikonghuan 回复Cirfe: 主线程不再等待线程,而是用一个死循环接收消息,线程退出时给主线程发送退出消息,不过问题是死循环会占走一个cpu核心,Windows可以用消息循环解决,不知道Linux下有没有类似的东西
大约 5 年之前 回复
l108103t
Cirfe 有没有那种方法,可以让我知道目前是哪个线程退出了。比如,a线程退出了,我在主线程里能否获知这个消息?
大约 5 年之前 回复

有没有那种方法,可以让我知道目前是哪个线程退出了。比如,a线程退出了,我在主线程里能否获知这个消息?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问