Döngüleri 2 çalıştırmanın en etkili yolu


9

Şu anda whilepencere yöneticimi, dwm'yi ve sistem bilgisini ona yazdıran durum çubuğunu başlatmak için iki farklı döngü kullanıyorum .

Şu anda benim çözüm bunları aynı komut dosyasında arka arkaya çalıştırmaktır:

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

Ayrıca bunun gibi iç içe bir whiledöngü olarak çalıştırmak gördük :

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

İkincisi CPU ani artışlarına neden oluyor. Verimlilik açısından (en az kaynak çağrısı vb.) Bu iki döngüyü çalıştırmak için en iyi yaklaşım nedir ve neden?

Yanıtlar:


6

Bariz bir şeye işaret ettiğimden emin değilim, ancak ilk yol sonsuza kadar çalışan iki döngü oluşturmak, ikincisi ise sonsuz döngüler oluşturan sonsuz bir döngü oluşturmaktır, bu yüzden sonsuza kadar devam edeceksiniz - sonsuz döngü sayısının artması. Sonsuz bir döngü oluşturur, dwm'yi çalıştırır ve sonra başka bir sonsuz döngü oluşturur - ilk sonsuz döngü durmamıştır. Diğerleri zaten çalışıyor olsa bile her geçiş başka bir dwm-status döngüsü while trueyapacak ( süresiz olarak çalışmasını sağlayacak)


Teşekkürler Michael: Hayır, belli değildi, daha fazla şüphe. Bu, ilk yaklaşımın doğru olduğu anlamına mı geliyor yoksa bunu yapmanın daha etkili bir yolu var mı?
jasonwryan

@jasonwryan Tam olarak ne yapmaya çalıştığınızdan emin değilim. Pencere yöneticinizi neden birden çok kez çalıştırmanız gerekiyor? Ben sadece bir dwmkez arka plan ve daha sonra dwm-statusbir döngü içinde çalıştırmak düşünürdüm
Michael Mrozek

1
Programları kapatmadan dwm'yi yeniden başlatmanızı sağlar. Kuşkusuz, nadiren kullanıyorum, ancak yine de kullanışlı ... Bkz: wiki.archlinux.org/index.php/… "
jasonwryan

1
@jasonwryan Vay be, bu fevkalade huysuz :). Sonra evet, ilk yaklaşım muhtemelen iyidir. Şimdi ikinci yolu anladığım halde, dwm'yi her öldürdüğünüzde sadece yeni bir dwm-status döngüsü oluşturuyor olmalı, ki bu o kadar sık ​​değil, bu yüzden aslında sorunlarınızın nedeni olduğundan emin değilim
Michael Mrozek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.