为什么pthread里面等待叫join?

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

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

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

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