加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
}

解决方法

but if i use thread sleep then it getting delay in every iteration. i am using c# 4.0.

您可以使用Thread.Sleep(0),表示:

that this thread should be suspended to allow other waiting threads to execute.

static void Main(string[] args)
{
  while(true)
  {
    processData();
    Thread.sleep(0);
  }
}

这将允许线程放弃对其他线程的一些处理,防止它使用100%的CPU,但仍然允许它以接近全速运行.

请注意,使用任何延迟虽然会降低整体CPU使用率,但会降低总吞吐量.最大化吞吐量的唯一方法是允许它不停旋转,这当然会使CPU使用率保持很高.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读