这是一个相当愚蠢的问题......然而它却让我感到困惑。在threading
模块中,我们有Thread.join()
方法。
我知道它阻止了调用线程,但为什么.join()
被称为'join'?为什么它不被称为main_thread_wait
或block_parent_thread
或类似的东西?
每次看到.join()
时,我都觉得孩子们正在加入一些事情来完成工作。为方法名称选择此特定关键字是否有某些原因?
答案 0 :(得分:1)
此名称远比Python早。它在POSIX线程库(libpthread)中显示为pthread_join()
(使用" pthread"前缀,因为C没有名称空间)。但是,对于进程级并发,Python和POSIX都使用名称wait()
。
pthread库的其他部分确实使用术语“等待”,但通常用于更高级别的同步原语,例如pthread_barrier_wait()
或pthread_cond_wait()
。我想pthread_wait()
在等待[某些同步对象]"之间会有些模棱两可。和#34;等待线程终止。"
答案 1 :(得分:0)
子线程加入父级。 Thread.start
让父母产生一个线程让它自由。 Thread.join
使父块(等待)直到孩子完成其工作。
你可以这样想象:
Thread.start
生下一个凡人run
方法)is_alive
join
方法)。在这样做时,上帝不能做任何其他事情,因为他喜欢非常崇拜他的生物(召唤join
阻止父母的线索),但在凡人死后,上帝可以继续他的生命