c# – 继续运行方法的最佳方法是什么
发布时间:2020-12-16 01:57:38 所属栏目:百科 来源:网络整理
导读:我必须继续运行24×7的方法.基本上 应用程序应该通过使用某个线程每秒处理40个数据. 我可以使用while或递归调用相同的方法.但在这两个过程中 cpu使用率过高几乎95-100%.我不能使用计时器,因为 然后处理线程无法正常工作.根据提供的解决方案 许多人说话时使
我必须继续运行24×7的方法.基本上
应用程序应该通过使用某个线程每秒处理40个数据. 我可以使用while或递归调用相同的方法.但在这两个过程中 cpu使用率过高几乎95-100%.我不能使用计时器,因为 然后处理线程无法正常工作.根据提供的解决方案 许多人说话时使用线程睡眠.但如果我使用线程睡眠 然后它在每次迭代中都会出现延迟.我正在使用c#4.0. 我的问题:有没有更好的解决方案来减少CPU使用? 主要方法: static void Main(string[] args) { while(true) { processData(); Thread.sleep(1000); // here i use a 1 second sleep just for give a breath of CPU. //But this one second sleep make me delay for enter data processing. // I am looking for a better solution that no sleep time will use and CPU usages will getting low. } } //Method should run always static string processData() { { // Open and close threads to process the data in every second. } // processData(); // it can be used for recursive method calling } 解决方法
您可以使用
static void Main(string[] args) { while(true) { processData(); Thread.sleep(0); } } 这将允许线程放弃对其他线程的一些处理,防止它使用100%的CPU,但仍然允许它以接近全速运行. 请注意,使用任何延迟虽然会降低整体CPU使用率,但会降低总吞吐量.最大化吞吐量的唯一方法是允许它不停旋转,这当然会使CPU使用率保持很高. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |