【发布时间】:2019-11-29 03:21:20
【问题描述】:
我有一个将 x/y 坐标发送到某个输出的线程。如果没有 Sleep(1) ,它会锤击 CPU(我的 CPU 为 13%) - 但输出非常平滑。使用 Sleep(1) 时,CPU 使用率下降到 1%,但会感觉到轻微的卡顿。我觉得我需要一个 Sleep(0.5) 什么的。只需将线程从 100% 拉回即可。但是亚毫秒级的睡眠似乎是不可能的。
【问题讨论】:
-
你可以试试
Thread.Sleep(0);。如果有另一个同等优先级的线程等待,它基本上只会挂起线程。如果它被挂起,它会立即进入等待队列。 -
我已经尝试过这个和相同的问题,当设置为 0 时它会运行 CPU。然而,这让我想知道 - 如果设置为零并且我将其优先级设置为“最低”,那么它占用我的 CPU 的 15% 是否重要?因为如果 CPU 开始 100% 起床,它就会开始挂起这个线程?
-
是的,如果你没有达到 100% 的使用率,那么老实说没有什么好担心的。
-
如果这是关于可视化的,那么您必须选择至少 24Hz 的刷新率或更新率才能获得流畅的视觉感知。这是人眼处理图像的速率。这至少是 T = 1/f = 1/24Hz = 0,04166 秒 = 41,66 毫秒。
-
如果不是将更新从提供者推送到输出,而是从提供者拉取更新,那会怎样?更新 x/y 值,并使用计时器以您需要的频率轮询这些值。您的显示器可能只能以 60 fps 刷新,因此更新速度可能没有意义。
标签: c# multithreading cpu throttling