【问题标题】:How can I Optimize while(true) for lesser CPU impact [duplicate]如何优化 while(true) 以减少对 CPU 的影响 [重复]
【发布时间】:2021-09-26 06:44:20
【问题描述】:

仅此一项会占用大量 CPU 使用率,我需要它一直保持到函数何时被调用但对 CPU 友好

public static void Run()
        {
            var R1 = new Random(Guid.NewGuid().GetHashCode());

            while (true)
            {
                try
                {
                    if (Main.Process)
                    {
                       
                       
                    }
                }
                catch { }
            }
        }

优化这个的最佳方法是什么?每当我尝试运行它时,即使还没有任何功能,它也会立即占用大量 CPU 资源。

【问题讨论】:

  • 能否在需要处理时对其进行重构以获取事件?
  • 您的问题不包括有关Main.Process 是什么以及它是否提供一些可等待同步机制的信息。如果是这样,那么您的答案就是使用该机制而不是轮询。所以假设它没有,重复的问题是你要做的最好的事情,即在循环中放置一个小的延迟,这样你就只检查每 100、200、500 等毫秒的状态,而不是消耗 CPU。

标签: c# loops while-loop


【解决方案1】:

这称为无限循环。除非您有有效的退出点(循环中的 break; 语句),否则它将永远占用您的 CPU 和内存。

【讨论】:

  • 是的,但是每当我尝试添加中断时;该函数无法调用。我希望它处于空闲状态,等待信号完成其工作。
  • 无限循环和“永远运行”并不是天生的坏事,也不会导致 CPU 使用率过高。完全有可能有一个负责任地使用 CPU 的无限循环。此答案提供了对问题的错误诊断,并且未能提供任何有用的、可操作的建议来真正回答所提出的问题。
猜你喜欢
  • 2019-02-14
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
相关资源
最近更新 更多