gpt4 book ai didi

c# - Thread.Sleep 少于 1 毫秒

转载 作者:IT王子 更新时间:2023-10-29 04:13:30 25 4
gpt4 key购买 nike

我想在不到 1 毫秒的时间内调用线程休眠。我读到 thread.Sleep 和 Windows 操作系统都不支持它。

解决方案是什么?

对于所有想知道我为什么需要这个的人:我正在进行压力测试,想知道我的模块每秒可以处理多少条消息。所以我的代码是:

 // Set the relative part of Second hat will be allocated for each message 
//For example: 5 messages - every message will get 200 miliseconds
var quantum = 1000 / numOfMessages;

for (var i = 0; i < numOfMessages; i++)
{
_bus.Publish(new MyMessage());
if (rate != 0)
Thread.Sleep(quantum);
}

我很乐意听取您的意见。

最佳答案

你不能这样做。单个 sleep 调用通常会阻塞远超过 1 毫秒的时间(它取决于操作系统和系统,但根据我的经验,Thread.Sleep(1) 往往会阻塞 12-15 毫秒之间的某个时间)。

一般来说,Windows 并未设计为 real-time operating system .这种类型的控制通常不可能在普通(桌面/服务器)版本的 Windows 上实现。

最接近的通常是旋转并消耗 CPU 周期,直到达到您想要的等待时间(使用高性能计数器测量)。然而,这非常糟糕——你会吃掉整个 CPU,即使那样,你也可能会得到 preempted。有时会被操作系统有效地“休眠”超过 1 毫秒...

关于c# - Thread.Sleep 少于 1 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6254703/

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