thread.start和thread.join之间的上下文切换

时间:2010-11-16 11:50:43

标签: c# .net

如果在thread.start和thread.join之间有上下文切换,是否有任何不良影响? 如果一个线程在加入之前完成执行,会发生什么?

2 个答案:

答案 0 :(得分:1)

它确实依赖于子线程正在为你做什么,但通常如果主线程创建一个子进程然后在该子线程离开时进行更多的并发工作并且子进程首先完成它,那么,在最坏的情况下,有一个竞争条件。这是当您在代码中发生某些事情时,这些事情依赖于子线程正在进行工作但是如果实际上取决于正在完成的工作,则不实现控制来停止主线程继续进行。

最终调用.join将导致即时返回,因为所有方法都会等到子线程完成执行。但是,要注意意外的竞争条件,他们可能是一个正确的调试噩梦!

答案 1 :(得分:0)

如果线程已经完成执行,则会立即返回。