2015-12-04 10 views
6

मैं कीबोर्ड इंटरप्ट पर प्रतीक्षा करने के लिए लूप का उपयोग कर रहा हूं और फिर एक बहु थ्रेडेड वातावरण में बाहर निकलने से पहले कुछ साफ अप ऑपरेशन की अनुमति देता हूं।`लूप {} 'बनाम' लूप {नींद 1}`

begin 
    loop {} 
rescue Interrupt 
    p "Ctr-C Pressed..Cleaning Up & Shutting Down" 
    loop do 
    break if exit_bool.false? 
    end 
    exit 130 
end 

कोड का यह टुकड़ा मुख्य धागे में चलता है। कई फाइलें और डीबी ओप करने वाले कई धागे हैं। exit_bool अन्य धागे द्वारा एक परमाणु var सेट है यह इंगित करने के लिए कि वे कुछ ऑपरेशन के बीच में हैं। मैं मूल्य की जांच करता हूं और प्रतीक्षा करता हूं जब तक यह false चालू न हो और फिर बाहर निकलें।

मुझे आश्चर्य है कि loop{} की लागत loop{sleep x} के विपरीत है।

उत्तर

7

loop {} परिणामस्वरूप उच्च CPU उपयोग (~ 100%), जबकि loop { sleep x } नहीं है।

begin 
    sleep 
rescue Interrupt 
    # ... 
end 
:

एक अन्य विकल्प के लिए बस sleep हमेशा के लिए है