c# – 线程执行时序

c# – 线程执行时序,第1张

概述我编写了一个程序,它依赖于线程.此外,还需要测量每个线程所花费的总时间,以及执行时间(内核时间加上用户时间). 可以有任意数量的线程,许多线程可以同时运行.这取决于用户活动.我需要它们尽可能快地运行,因此使用具有一些开销的东西(如WMI /性能监视器)来测量线程时间并不理想. 目前,我正在使用GetThreadTimes,如本文所示:http://www.codeproject.com/KB/do 我编写了一个程序,它依赖于线程.此外,还需要测量每个线程所花费的总时间,以及执行时间(内核时间加上用户时间).

可以有任意数量的线程,许多线程可以同时运行.这取决于用户活动.我需要它们尽可能快地运行,因此使用具有一些开销的东西(如WMI /性能监视器)来测量线程时间并不理想.

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

我的问题很简单:我理解.NET线程可能与系统线程没有一对一的对应关系(尽管到目前为止我所有的测试中,它似乎都是一对一的).既然如此,如果.NET决定将我的两个或多个线程放入一个系统线程中,我的时序代码会得到奇怪的结果吗?如果是这样(或者即使没有),还有另一种方法来衡量.NET线程的内核和用户时间吗?

解决方法 如上所述:多线程由线程调度程序内部管理,线程调度程序是CLR通常委托给 *** 作系统的函数.线程调度程序确保为所有活动线程分配适当的执行时间,并且等待或阻止的线程(例如,在独占锁或用户输入上)不消耗cpu时间.   理论上.NET团队可能会实现自己的调度程序,但我怀疑这一点.所以我认为GetThreadTimes函数就是你所需要的. 总结

以上是内存溢出为你收集整理的c# – 线程执行时序全部内容,希望文章能够帮你解决c# – 线程执行时序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存