假设我在 C# 应用程序中生成 3 个线程:T1、T2 和 T3,并为每个线程发出 Run 调用。
通常,处理器会以循环方式调度线程(单个处理器和所有线程具有相同的优先级)。
但是,假设线程 T1 发出阻塞 Web 服务调用。
它会被立即抢占还是在其时间片完成后被抢占?
基本上,发出 Web 服务网络调用(或任何其他调用)是否会导致线程处于阻塞状态?
最佳答案
一旦线程发出阻塞系统调用(对 IO 的任何请求),它就会被挂起,并且只有在该系统调用完成时才标记为“就绪”(尚未运行)。
所以是的,它将立即被抢占。
关于.net - .NET 中关于阻塞调用的线程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226681/