目前我使用两个不同的while
循环来启动我的窗口管理器,数据管理,以及向其打印系统信息的状态栏。
我目前的解决方案是在同一个脚本中连续运行它们,如下所示:
while true; do
$HOME/Scripts/dwm-status
sleep 2s
done &
while true; do
dwm >/dev/null
done
我也有看到它运行作为嵌套while
循环,如下所示:
while true; do
while true; do
$HOME/Scripts/dwm-status
sleep 2s
done &
dwm >/dev/null
done
第二个似乎会导致 CPU 峰值。就效率(最少调用资源等)而言,运行这两个循环的最佳方法是什么?为什么?
答案1
我不确定我是否指出了一些明显的事情,但第一种方法是创建两个永远运行的循环,而第二种方法是创建一个无限循环,它创建无限循环,所以你最终会得到一个永远运行的循环。 -增加无限循环的数量。它创建一个无限循环,运行 dwm,然后创建另一个无限循环 - 第一个无限循环尚未停止。每次传递都会产生另一个 dwm-status 循环,即使其他循环已经在运行(while true
将使它们无限期地运行)