无限循环消耗100%的CPU
我陷入了需要生成某个Hz的定义频率的情况。 我已经尝试过多媒体计时器和互联网上提供的所有其他东西,但到目前为止,一些if-else条件的无限循环给了我最好的结果。 但是这种方法的问题在于它消耗了几乎所有的cpu,没有其他应用程序正常工作的空间。
我需要一种算法,要么产生一些Hz到KHz的频率。
我正在使用带有C#的windows平台。
您无法在非实时平台上准确生成固定频率的信号。 在任何时候,来自相同或其他进程的高优先级线程都可能阻止线程的执行。 例如,当GC线程启动时,工作线程将被暂停。
话虽这么说,你可以拥有的抖动是什么,你需要支持的最高频率是多少?
我接近问题的方法是在声卡上生成“声波”并输出。 有一些方法可以从C#访问您的声卡,例如使用XNA。 正如其他人所指出的那样,使用CPU并不是一个好方法。
使用Thread.Sleep(delay);
在你的循环中
它减少了处理器的使用量
在生成计时器时,您可能希望根据频率周期进行睡眠。
您必须在自己的线程中运行频率发生器并调用
Thread.Sleep(yourFrequencyPeriodMs);
在每个时期的迭代中。
上述就是C#学习教程:无限循环消耗100%的CPU分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1016033.html