问个函数命名的问题,等待线程结束的函数名为什么叫join?

蠓虫带着秤砣飞 2020-06-01 01:14:26
虽然用了不少,刚开始用的时候,不明白join这个名字的意义,就一直这样用下来了。
到现在发现用了好久了,仍然不明白等待线程结束为什么要起这么个匪夷所思的名字?我查词典,各种英汉翻译的,都没有等待结束的意思,有的意思都是:加入,连接,参加,接合,联合,联结,会合,连结等意思,完全没有一点要等待线程结束的意思。

我想我是误解这个函数的意思了,有谁能给讲讲吗?为什么叫Join,这个函数名字到底代表了什么意义?
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
双杯献酒 2020-06-03
  • 打赏
  • 举报
回复
join 这里做 "汇合" 讲.
千梦一生 2020-06-02
  • 打赏
  • 举报
回复
insert感觉相对能更形象,或者stepin也像
  • 打赏
  • 举报
回复
引用 6 楼 千梦一生 的回复:
insert感觉相对能更形象,或者stepin也像

insert我更无法接受。stepin也不太好接受。


等等吧,看有没有更好的解释。
  • 打赏
  • 举报
回复
引用 2 楼 sdghchj 的回复:
join 汇合、汇聚
POSIX线程标准函数pthread_join,然后boost线程库定义的准标准沿用了单词join,c++11标准也采用了boost的命名join.
多线程平行时空,join 形成交点。



windows API系列就喜欢wait


看来眼界还有些窄,要拓宽眼界了。
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
这种函数名的意义,是当时写api的人赋予的(大部分单词都是词和意一致的,少数因为某些单词已经被赋予其他意义了,所以只能选用一些意义接近的词)。
join是加入的意思,在一个处理中加入另外一个处理说明什么?说明加入的处理需要执行才结束后才能继续后面的处理,否则就不(join)加入了,而改成调用执行之类的就可以了(如call或者exec或者run等等,这些都没有表示等待的意思,只是表示调用执行)。
当然用wait是可以,但是wait已经被赋予了另外的意义了(线程等待锁),所以选择join在某种程度上还是能表达等待的意义的。


引用 2 楼 sdghchj 的回复:
join 汇合、汇聚
POSIX线程标准函数pthread_join,然后boost线程库定义的准标准沿用了单词join,c++11标准也采用了boost的命名join.
多线程平行时空,join 形成交点。



windows API系列就喜欢wait


引用 3 楼 sevancheng 的回复:
并行分支合并,才猜是这个意思


大家这么一说,确实有点感觉像了,好吧,没有这样想的时候,无论怎么想都觉得这个函数的名字特别奇怪。
将指定线程的执行过程,加入到当前线程中。也就是顺序执行到指定线程结束,才继续往下执行。这样说比较通顺了。
sevancheng 2020-06-01
  • 打赏
  • 举报
回复
并行分支合并,才猜是这个意思
sdghchj 2020-06-01
  • 打赏
  • 举报
回复
join 汇合、汇聚 POSIX线程标准函数pthread_join,然后boost线程库定义的准标准沿用了单词join,c++11标准也采用了boost的命名join. 多线程平行时空,join 形成交点。 windows API系列就喜欢wait
qybao 2020-06-01
  • 打赏
  • 举报
回复
这种函数名的意义,是当时写api的人赋予的(大部分单词都是词和意一致的,少数因为某些单词已经被赋予其他意义了,所以只能选用一些意义接近的词)。
join是加入的意思,在一个处理中加入另外一个处理说明什么?说明加入的处理需要执行才结束后才能继续后面的处理,否则就不(join)加入了,而改成调用执行之类的就可以了(如call或者exec或者run等等,这些都没有表示等待的意思,只是表示调用执行)。
当然用wait是可以,但是wait已经被赋予了另外的意义了(线程等待锁),所以选择join在某种程度上还是能表达等待的意义的。


64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧