gpt4 book ai didi

linux线程, sleep 在主要

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:27 25 4
gpt4 key购买 nike

我的程序有多个线程,主循环没有功能。我曾经将主循环编码为 while(1){sleep(1);}。

我现在问自己,但不能确定在性能方面一个空的主循环 (while(1){}) 是否比 sleep(1) 更好,反之亦然,还是一样???

我以为调度程序会检查每个调度周期中的每个任务,看看它们是否需要被唤醒,这样做:

  • 当 main 是一个空的 while 循环时:醒来什么都不做

  • 当main是休眠循环时:检查/重新计算唤醒时间戳,如果需要唤醒,则唤醒什么都不做

有什么区别吗?

最佳答案

差别很大。sleep(1) 版本比 empty while(1){} 好得多。

sleep(1) 让系统内核检查时间,当时间警报到达时,它将运行下一步。所以它只需要一点资源。

但是while(1){}不同,它会一直运行语句“while(1)”,这会消耗大量的CPU资源(它能得到的所有资源)。

你可以使用 top 命令来查看资源使用情况,你会发现 sleep(1) 版本只使用了很少的资源,而“while(1){}”使用了 100% CPU(一个 Cpu核心/线程)

关于linux线程, sleep 在主要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com