我正在研究多线程并遇到join()
。
据我所知,在线程上使用join()
会使进程等待,直到'join'线程终止。例如,在t1.join()
中调用main
会使main
等待,直到线程t1
中的作业完成并且t1
终止。
我很好奇函数join()
如何使这成为可能 - 它如何使当前线程在函数内被“阻塞”? join()
是否首先强制执行连接的线程,以便任何其他线程应该等到该线程终止?或者,是否有一些方法可以在两个线程(调用join()
的线程和已连接的线程)之间进行通信?
我将等待答案。非常感谢!
答案 0 :(得分:0)
为了能够加入你需要能够等待一些事件。然后加入看起来像这样:
function join(t : Thread)
// do this atomically
if already done
return
wait on termination event of t
end
等待可以通过以下两种方式之一完成:
答案 1 :(得分:0)
它特定于语言。
一旦你create
一个线程,它就会开始运行。
join
操作是指主进程停止并等待线程退出并捕获返回代码。它会阻塞直到你的线程完成 - 这是重点,因为它允许同步发生 - 你的程序中的所有东西都处于已知的状态'。
相关的是detach
操作,它实际上是在说“我不再关心”。