2 개의 while 루프를 실행하는 가장 효율적인 방법


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

두 번째는 CPU 스파이크를 일으키는 것으로 보입니다. 효율성 측면에서 (자원에 대한 최소 요청 등)이 두 루프를 실행하는 가장 좋은 방법은 무엇입니까?

답변:


6

나는 분명한 것을 지적하고 있는지 확실하지 않지만 첫 번째 방법은 영원히 실행되는 두 개의 루프를 만드는 것이고, 두 번째는 무한 루프를 만드는 무한 루프를 만드는 것이므로 끝없이 끝날 것입니다. 무한 루프 수 증가. 무한 루프를 만들고 dwm을 실행 한 다음 또 다른 무한 루프를 만듭니다. 첫 번째 무한 루프가 중지되지 않았습니다. 각 패스는 다른 패스가 이미 실행중인 경우에도 다른 dwm-status 루프를 만듭니다 ( while true무한하게 계속 실행 함)


고마워 마이클 : 아니, 의심의 여지가 분명하지 않았다. 이것이 첫 번째 방법이 올바른 방법인지, 아니면 더 효율적인 방법이 있습니까?
jasonwryan

@jasonwryan 글쎄, 당신이 무엇을하려고하는지 정확히 모르겠습니다. 왜 창 관리자를 여러 번 실행해야합니까? 난 당신이 dwm한 번만 배경 한 다음 dwm-status루프에서 실행할 수 있다고 생각합니다
마이클 Mrozek

1
프로그램을 닫지 않고 dwm을 다시 시작할 수 있습니다. 분명히, 나는 그것을 자주 사용하지는 않지만 그럼에도 불구하고 편리합니다 ... 참조 : wiki.archlinux.org/index.php/… "
jasonwryan

1
@ Jasonwryan 와우, 그것은 환상적으로 해킹입니다 :). 그렇다면 첫 번째 방법은 아마도 좋습니다. 지금은 두 번째 방법을 이해하지만, 그것은 단지 내가 아니에요 확실히 실제로 문제의 원인, 그래서 그 종종 가정 새로운 DWM-상태 루프는 DWM을 죽일 때마다, 제작되어야한다
마이클 Mrozek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.