Найефективніший спосіб запуску 2 циклів


9

В даний час я використовую дві різні whileпетлі для запуску вікна-менеджера, dwm та рядка стану, який друкує інформацію про нього.

Наразі моє рішення - запустити їх послідовно за тим же сценарієм, як:

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

Другий, здається, спричиняє сплески процесора. З точки зору ефективності (найменше використання ресурсів тощо), який найкращий підхід для запуску цих двох циклів і чому?

Відповіді:


6

Я не впевнений, чи я вказую на щось очевидне, але перший спосіб - це створити дві петлі, які працюватимуть назавжди, а другий - створити нескінченну петлю, яка створює нескінченні петлі, тож ви збираєтеся закінчити колись -зростає кількість нескінченних петель. Він створює нескінченний цикл, запускає dwm, а потім створює ще один нескінченний цикл - перший нескінченний цикл не зупинився. Кожен пропуск зробить ще один цикл статусу dwm, навіть якщо інші вже запущені ( while trueтриматимуть їх працювати нескінченно)


Дякую Майклу: ні, це не було очевидно, більше підозри. Чи означає це, що перший підхід є правильним, чи існує більш ефективний спосіб зробити це?
Jasonwryan

@jasonwryan Ну, я не впевнений, що саме ти намагаєшся зробити. Навіщо вам потрібно запускати менеджера вікон кілька разів? Я б подумав, що ти можеш просто фоновий dwmраз, а потім бігти dwm-statusв петлі
Майкл Мрозек

1
Це дозволяє перезапустити dwm без закриття програм. Справді, я використовую її нечасто, але це все-таки зручно ... Дивіться: wiki.archlinux.org/index.php/… "
jasonwryan

1
@jasonwryan Вау, це фантастично хакіш :). Тоді так, перший підхід, мабуть, хороший. Хоча тепер, коли я розумію другий спосіб, слід робити лише цикл статусу dwm лише кожного разу, коли ви вбиваєте dwm, що, напевно, не так часто, тому я не впевнений, що це насправді причина ваших проблем
Майкл Mrozek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.