为什么 pthread 里面等待叫 join?

今天在等乙方反馈的时候复习了一下多线程和多进程的一些东西,突然想到一个困扰了我很久的问题——pthread里为什么等待线程返回的函数叫做pthread_join

当时学的时候就是死记硬背的,今天看到了,就随手查了一下,发现叫join是有来头的。这个称呼来自于Fork-join model

在并行计算里面,执行流程产生分支即为 fork(在 git 上也有 fork 的操作,创建进程分支也用 fork),当执行流程整合的时候就叫 join,可以理解为加入到一起。

pthread里可以这么理解,主线程(通常来说是指 main 创建的)创建了子线程,子线程运行结束后 join 到主线程上,当然你也可以不 join,直接 detach。即是加入到主线程,这里 join 和 detach 的区别就是 join 会将线程返回值合流到主线程中,而 detach 直接分离了。