首页 新闻 搜索 专区 学院

c#使用Task创建大量线程时,如何降低CPU占用率

0
[待解决问题]

代码如下:

        public MainWindow()
        {
            InitializeComponent();
            for (int i = 0; i < 500; i++)
            {
                Task.Run(task);
            }
        }
        public async Task task()
        {
            while (true)
            {
                //await Task.Delay(1);
                //Thread.Sleep(1);
            }
        }

当使用await Task.Delay(1)时,cpu占用率很高,用Thread.Sleep(1)去阻塞线程可以降低占用率,但是这样用会不会有什么影响

c#
冷静的疯子的主页 冷静的疯子 | 菜鸟二级 | 园豆:202
提问于:2020-02-24 20:39
< >
分享
所有回答(4)
0

你用多线程不就是为了提高CPU占用率吗?

吴瑞祥 | 园豆:28831 (高人七级) | 2020-02-25 08:47

是想在使用多线程的基础上,去降低cup占用

支持(1) 反对(0) 冷静的疯子 | 园豆:202 (菜鸟二级) | 2020-02-25 08:50

@冷静的疯子: 你弄个暂停没意义的,
你要优化肯定是实际运算上的优化,这种CPU占用不是真实的,只是骗自己的。
你具体把算法写出来,然后优化下算法,再看CPU占用前后变化,

支持(0) 反对(0) 吴瑞祥 | 园豆:28831 (高人七级) | 2020-02-25 08:53
0

用 Thread.Sleep 。。。

lzhdim | 园豆:654 (小虾三级) | 2020-02-25 17:37
-1

怎么不用线程池呢。Task.TaskFactory.New(...)这样子

数据酷软件 | 园豆:130 (初学一级) | 2020-02-28 08:16
0

信号量限制并发度

WeihanLi | 园豆:205 (菜鸟二级) | 2020-04-20 17:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册