C# 上下文在thread.start和thread.join之间切换

C# 上下文在thread.start和thread.join之间切换,c#,.net,C#,.net,如果thread.start和thread.join之间存在上下文切换,是否会产生不良影响? 如果一个线程在join之前完成执行,会发生什么情况?如果该线程已经完成执行,join将立即返回。这确实在一定程度上取决于子线程为您做了什么,但通常情况下,如果主线程创建一个子线程,然后在该子线程不在时执行更多并发工作,并且该子线程首先完成其执行,那么在最坏的情况下,将出现竞争条件。这是指代码中发生的某些事情依赖于子线程执行工作,但如果主线程实际上依赖于该工作的完成,则不实现停止主线程继续的控件 最终,对

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

如果该线程已经完成执行,join将立即返回。

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

最终,对.join的调用将导致即时返回,因为该方法所做的只是等待子线程完成执行。然而,请注意意外的比赛条件,他们可能是一个正确的噩梦调试