gpt4 book ai didi

c# - 线程执行时序

转载 作者:行者123 更新时间:2023-11-30 12:50:48 25 4
gpt4 key购买 nike

我编写了一个严重依赖线程的程序。此外,还有一个需求是测量每个线程所花费的总时间,以及执行时间(内核时间加上用户时间)。

可以有任意数量的线程,并且可以同时运行多个线程。这取决于用户事件。我需要它们尽可能快地运行,因此使用 WMI/Performance Monitor 等有一些开销的东西来测量线程时间并不理想。

目前,我正在使用 GetThreadTimes,如本文所示:http://www.codeproject.com/KB/dotnet/ExecutionStopwatch.aspx

我的问题很简单:我知道 .NET 线程可能不会与系统线程在一对一的基础上对应(尽管在我目前的所有测试中,它似乎是一对一的)。既然如此,如果 .NET 决定将我的两个或多个线程放入一个系统线程中,我是否会从我的计时代码中得到奇怪的结果?如果是(或者即使不是),是否还有另一种方法来测量 .NET 线程的内核和用户时间?

最佳答案

如其所述:多线程由线程调度程序在内部管理,线程调度程序是 CLR 通常委托(delegate)给操作系统的功能。线程调度程序可确保为所有事件线程分配适当的执行时间,并且正在等待或阻塞(例如,排他锁或用户输入)的线程不会消耗 CPU 时间。 理论上 NET 团队可以实现他们自己的调度程序,但我对此表示怀疑。所以我认为 GetThreadTimes 函数是您所需要的。

关于c# - 线程执行时序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398130/

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