gpt4 book ai didi

linux - 在 Linux 中运行永久进程时,我们需要 sleep() 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:16 28 4
gpt4 key购买 nike

我读到像守护进程这样的永久进程应该在 while(1) 或 for(;;) 循环中使用 sleep() 运行。他们说,这是必需的,因为否则该进程将始终位于运行队列中,并且内核将始终运行它。这将阻止其他进程。我不同意它会完全阻止其他进程。如果有时间分片,那么就会执行其他进程。但是,它肯定会抢走别人的时间。由于该进程始终处于运行状态,因此对其他进程进行延迟。默认情况下,Linux 以循环方式运行。第一个任务被交换,然后是其他任务。这是一个循环链表,第一个任务为 swapd(process-id 为 0),然后是其他任务。我相信这仍然是基于时间切片的。每个过程都有特定的时间。这些任务只不过是流程描述符。我相信这个链接列表是由 init 进程维护的。如果我错了,请在这里纠正我。另一个问题是,如果我们需要提供 sleep() 那么它的值应该是多少?如何确定 sleep 值以获得最佳效果?

最佳答案

如果您的程序有有用的事情要做,请不要限制它。程序可以通过执行 IO 和等待等阻塞操作来移出运行队列。

如果您正在编写一个可以旋转任意次数的轮询循环,您可能希望使用 sleep 稍微限制它,因为旋转太频繁没有什么值(value)。

也就是说,轮询循环是最后的手段。通常,程序会对每条指令执行有用的工作,因此它们根本不会休眠。

关于linux - 在 Linux 中运行永久进程时,我们需要 sleep() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20266643/

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