gpt4 book ai didi

c# - 是否有关于线程调度的简单而有意识的图表/算法?

转载 作者:可可西里 更新时间:2023-11-01 10:40:23 25 4
gpt4 key购买 nike

我在 W2008R2 上运行了软实时 .NET 应用程序。

我刚刚意识到我无法解释线程的调度精度。

令我尴尬的是,我根本不知道操作系统线程是如何工作的。

因此,我将解释我所知道的,如果有人可以帮助我填补空白并向我介绍 .NET 和 Windows 中用于调度线程的算法的简单描述,我将不胜感激。

我的代码在托管线程中运行。据我所知,托管线程(我们称它们为 .NET 线程)在非托管线程(我们称它们为 OS 线程)中运行。

我知道线程在争夺 CPU 时间和其他资源。并且有一个软件 - 调度程序,它监视资源和线程并使整个事情正常运行。

在这里我不确定 - 调度程序只是用于操作系统的调度程序还是还有调度 .NET 线程的 .NET 调度程序?如果有两个调度程序,那么它们如何协同工作?

调度线程的规则是什么?

我想将这个问题缩小到一个线程,它只进行算术计算而不访问任何设备,所以我们谈论的是纯粹的 CPU 消耗线程。

调度程序如何影响 .NET 线程优先级、进程优先级和共享资源(在本例中为 CPU)?

最佳答案

当前版本的 .NET 桌面运行时在 .NET 线程和操作系统线程之间确实有 1:1 的映射。这可能会在未来的版本中发生变化(在其他主机中可能并非如此;我知道在 AutoCAD 中并非如此,但我相信在 SQL Server 和 MS Office 中是这样)。

请注意,.NET 线程与操作系统线程池不同(尽管它确实使用了一个进程范围的 I/O 完成端口,它具有一些类似于池的语义) .

要获得完整的答案,您需要两本书:Windows InternalsConcurrent Programming on Windows .我建议按此顺序阅读它们。

关于c# - 是否有关于线程调度的简单而有意识的图表/算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com