छोरों करते समय 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- स्थिति लूप बनाएगा, भले ही अन्य पहले से चल रहे हों ( while trueउन्हें अनिश्चित काल तक चालू रखेंगे)


धन्यवाद माइकल: नहीं, यह स्पष्ट नहीं था, एक संदेह से अधिक। क्या इसका मतलब यह है कि पहला दृष्टिकोण सही है, या इसे करने के लिए एक अधिक कुशल तरीका है?
जसोनव्रीयन

@ajonwryan खैर, मुझे यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं, बिल्कुल। आपको कई बार अपने विंडो मैनेजर को चलाने की आवश्यकता क्यों होगी? मुझे लगता है कि होगा तुम सिर्फ पृष्ठभूमि सकता है dwmएक बार और फिर से चलाने के dwm-statusएक पाश में
माइकल Mrozek

1
यह आपको प्रोग्राम को बंद किए बिना dwm को पुनरारंभ करने की अनुमति देता है। बेशक, मैं इसे अक्सर उपयोग करता हूं, लेकिन फिर भी यह आसान है ... देखें: wiki.archlinux.org/index.php/… "
jasonwryan

1
@jasonwryan वाह, यह काल्पनिक रूप से हैक है :)। फिर हां, पहला तरीका शायद अच्छा है। हालाँकि अब जब मैं दूसरा तरीका समझ गया हूँ, तो यह केवल एक नया dwm-स्टेटस लूप बनाना चाहिए जब भी आप dwm को मारेंगे, जो मुझे लगता है कि अक्सर नहीं होता है, इसलिए मुझे यकीन नहीं है कि यह वास्तव में आपकी समस्याओं का कारण है
माइकल Mrozek
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.