【问题标题】:Thread scheduling in .NET regarding blocking calls.NET 中关于阻塞调用的线程调度
【发布时间】:2011-11-22 12:18:11
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 好奇您为什么有兴趣了解?这在很大程度上取决于操作系统。希望您没有对线程进行一些微优化,是吗?这东西被我们屏蔽是有原因的。
  • 我想到了一个疑问。所以只是想清除它。

标签: .net multithreading


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2018-06-26
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多