C#最有可能发生线程切换?

Cas*_*sto 0 multithreading

我想知道什么时候.Net很可能会从一个线程切换到另一个线程?我知道我们无法预测何时会发生这种情况,但这有什么情报吗?例如,当一个线程被执行时,它会在切换之前尝试等待返回方法或循环完成吗?

zhi*_*ang 5

我不是.NET的专家,但通常调度由内核处理.

  1. 你的线程的时间片已经过期(线程/进程只获得一定的CPU时间)

  2. 您的线程已阻止IO.

  3. 其他一些模糊的原因,比如等待IPC消息,网络数据包等.

线程可以在其执行路径的任何位置被抢占,无论是循环还是从函数返回.这通常不由底层VM(.NET或JVM)处理,而是由OS控制.