A maneira mais eficiente de executar 2 loops while

8

Atualmente, uso dois while loops diferentes para iniciar meu gerenciador de janelas, dwm e a barra de status que imprime informações do sistema .

Minha solução no momento é executá-los consecutivamente no mesmo script, assim:

while true; do
        $HOME/Scripts/dwm-status
        sleep 2s
    done &
while true; do
    dwm >/dev/null
done

Eu também o vi sendo executado como um loop while aninhado, como este:

while true; do
        while true; do
            $HOME/Scripts/dwm-status
            sleep 2s
        done &
        dwm >/dev/null
    done

O segundo parece causar picos de CPU. Em termos de eficiência (menos recursos, etc.), qual é a melhor abordagem para executar esses dois loops e por quê?

    
por jasonwryan 12.06.2011 / 05:02

1 resposta

6

Não tenho certeza se estou apontando algo óbvio, mas a primeira maneira é criar dois loops que são executados para sempre, enquanto o segundo é criar um loop infinito que cria loops infinitos, então você vai acabar com um número cada vez maior de loops infinitos. Ele cria um loop infinito, executa o dwm e cria outro loop infinito - o primeiro loop infinito não parou. Cada passagem fará outro loop de status do dwm, mesmo que os outros já estejam em execução ( while true os manterá rodando indefinidamente)

    
por 12.06.2011 / 05:13