.net - .NET 中关于阻塞调用的线程调度

标签 .net multithreading

假设我在 C# 应用程序中生成 3 个线程:T1、T2 和 T3,并为每个线程发出 Run 调用。

通常,处理器会以循环方式调度线程(单个处理器和所有线程具有相同的优先级)。

但是,假设线程 T1 发出阻塞 Web 服务调用。

它会被立即抢占还是在其时间片完成后被抢占?

基本上,发出 Web 服务网络调用(或任何其他调用)是否会导致线程处于阻塞状态?

最佳答案

一旦线程发出阻塞系统调用(对 IO 的任何请求),它就会被挂起,并且只有在该系统调用完成时才标记为“就绪”(尚未运行)。

所以是的,它将立即被抢占。

关于.net - .NET 中关于阻塞调用的线程调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226681/

相关文章:

c++ - 具有 pthread 实现的并发队列

c# - 自定义 XSD 类型的 Xml 序列化

c# - 人们如何在 Web API 中测试他们的 [RequireHttps] 属性?

.net - 记录属性上的自定义属性会发生什么情况?

multithreading - JNDI 名称解析在 tomee 的新线程中失败

wpf - Dispatcher 与后台线程有何不同?

c - 给定两个线程并行运行时,变量的可能值是多少?

c# - Azure辅助角色抛出System.IO.FileNotFoundException

c# - 为什么在尝试 Assembly.ReflectionOnlyLoad 时没有执行 ReflectionOnlyAssemblyResolve?

c - malloc 是线程安全的吗?