gpt4 book ai didi

c# - 如何在没有 CPU 过载的情况下在任务中引入准确的小延迟?

转载 作者:太空狗 更新时间:2023-10-29 19:45:01 25 4
gpt4 key购买 nike

<分区>

我正在实现一种通信算法,以非常快地定期发送信息,即每包之间发送 1 毫秒。我有一个使用任务发送包的功能版本。这是我的代码示例:

private void Work()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();

while (!cancellationTokenSource.Token.IsCancellationRequested)
{
if (!Pack.PeriodicOn)
cancellationTokenSource.Cancel();

// Time used to send the packs before the interval time
double tolerance = Pack.Interval * 0.2F;

// In case of interval bigger than 25ms send pasks only 5ms before
if (tolerance > 5) tolerance = 5;

TimeSpan timeSpan = stopwatch.Elapsed;

// The waiting time is controlled by the condition below, if the condition is false, the while loop continues execution
// Send the information a little bit before to interval time to deal with the transmision delay
if (Pack.LastSent.TotalMilliseconds == 0 ||
timeSpan.TotalMilliseconds - Pack.LastSent.TotalMilliseconds >=
(Pack.Interval - tolerance))
{
SendData(Pack);
Pack.LastSent = timeSpan;
}
}

Pack.LastSent = new TimeSpan(0);
}

我的问题在于 CPU 使用率增加到不理想的水平。我知道我可以通过引入一些延迟来避免这种情况,但是,Thread.Sleep(1) 非常不准确,包之间的实际传输间隔增加,如果我使用 await Task.Delay(1) 似乎会产生相同的效果。

有没有人有其他方法可以准确地延迟任务?

提前致谢!

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