क्लोजर में मैं लगातार चल रही पृष्ठभूमि प्रक्रिया कैसे बना सकता हूं? एक लूप के साथ "भविष्य" का उपयोग कर रहा है जो सही तरीके से कभी समाप्त नहीं होता है?क्लोजर में मैं लगातार चल रही पृष्ठभूमि प्रक्रिया कैसे बना सकता हूं?
उत्तर
आप केवल एक फ़ंक्शन के साथ एक थ्रेड शुरू कर सकते हैं जो हमेशा के लिए चलता है।
(defn forever []
;; do stuff in a loop forever
)
(.start (Thread. forever))
आप इस प्रक्रिया से बाहर निकलने के ब्लॉक करने के लिए पृष्ठभूमि धागा नहीं करना चाहते हैं, यह एक डेमॉन धागा बनाने के लिए सुनिश्चित करें: आप कुछ और चालाकी आप java.util उपयोग कर सकते हैं चाहते हैं
(doto
(Thread. forever)
(.setDaemon true)
(.start))
एक निष्पादक सेवा बनाने के लिए .concurrent.Executors कारखाना। इससे धागे के पूल बनाने, कस्टम थ्रेड कारखानों, कस्टम आने वाली कतारों आदि का उपयोग करना आसान हो जाता है।
claypoole lib कुछ कार्य निष्पादन सामग्री को अधिक क्लोजर-अनुकूल एपीआई में लपेटता है यदि आप यही चाहते हैं की ओर।
शायद, या शायद लीन-डिमन? https://github.com/arohner/lein-daemon
मेरे सरल उच्च क्रम अनंत लूप समारोह (वायदा का उपयोग कर):
(def counter (atom 1))
(defn infinite-loop [function]
(function)
(future (infinite-loop function))
nil)
;; note the nil above is necessary to avoid overflowing the stack with futures...
(infinite-loop
#(do
(Thread/sleep 1000)
(swap! counter inc)))
;; wait half a minute....
@counter
=> 31
मैं दृढ़ता से परिणाम (उदाहरण में ऊपर स्टोर करने के लिए काउंटर के अनुसार एक परमाणु या Clojures से एक का उपयोग अन्य संदर्भ प्रकार की सिफारिश)।
कुछ ट्वीविंग के साथ आप थ्रेड-सुरक्षित तरीके से प्रक्रिया को शुरू/बंद/रोकने के लिए इस दृष्टिकोण का उपयोग भी कर सकते हैं (उदाहरण के लिए फ्लैग का परीक्षण करें कि लूप के प्रत्येक पुनरावृत्ति में (फ़ंक्शन) निष्पादित किया जाना चाहिए) ।
पी। यह जानना भी अच्छा है कि इस दृष्टिकोण का ओवरहेड बहुत कम है - यदि आप थ्रेड/नींद – mikera
हटाते हैं तो आप एक मिलियन काउंटर वृद्धि को एक सेकंड से अधिक प्राप्त कर सकते हैं। एक और सरल कार्यान्वयन जो स्टैक का उपभोग नहीं करेगा '(अनंत [एफ सेकेंड] (भविष्य (लूप [] (एफ) (थ्रेड/नींद (* सेकंड 1000)) (पुनरावृत्ति)))) –
@ जेम्स - मेरा कार्यान्वयन या तो ढेर का उपभोग नहीं करता है। तथ्य यह है कि 'अनंत-लूप' के लिए रिकर्सिव कॉल भविष्य के अंदर है जिसका अर्थ है कि यह मूल फ़ंक्शन के स्टैक फ्रेम में आवर्ती नहीं है। – mikera
- 1. मैं PHP में लगातार सत्र कैसे बना सकता हूं?
- 2. मैं वर्तमान में चल रहे लिनक्स प्रक्रिया को पृष्ठभूमि में कैसे रख सकता हूं?
- 3. मैं पृष्ठभूमि थ्रेड में WPF नियंत्रण कैसे बना सकता हूं?
- 4. एक चल रही प्रक्रिया linux
- 5. मैं एमएस एक्सेस में संग्रहीत प्रक्रिया कैसे बना सकता हूं?
- 6. मैं प्रति उपयोगकर्ता सत्र की चल रही प्रक्रिया की जांच कैसे कर सकता हूं?
- 7. लंबी चल रही प्रक्रिया जो एक फ़ाइल
- 8. एएसपी.नेट में लंबी चल रही पृष्ठभूमि प्रक्रिया - एप्लिकेशन_स्टार्ट या अलग प्रक्रिया?
- 9. मैं Spotify साइट पर पृष्ठभूमि प्रणाली कैसे बना सकता हूं?
- 10. मैं अर्द्ध पारदर्शी पृष्ठभूमि कैसे बना सकता हूं?
- 11. मैं कैसे सुनिश्चित करूं कि एक प्रक्रिया चल रही प्रक्रिया वह प्रक्रिया है जिसे मैं उम्मीद कर रहा हूं?
- 12. क्लोजर में जावा क्लास अपरिवर्तनीय कैसे बना सकता हूं?
- 13. यह निरंतर स्थान में क्यों नहीं चल रहा है (और मैं इसे कैसे बना सकता हूं)?
- 14. क्या मैं चल रही प्रक्रिया को डीबग करने के लिए जीडीबी का उपयोग कर सकता हूं?
- 15. मैं AllocateHwnd थ्रेडसेफ कैसे बना सकता हूं?
- 16. जांचें कि प्रक्रिया चल रही है
- 17. मैं रिमोट फाइल कैसे बना सकता हूं?
- 18. इसे पृष्ठभूमि में रखने के बाद लिनक्स पर एक चल रही प्रक्रिया में वापस बदलें
- 19. मैं बाइनरी पैच कैसे बना सकता हूं?
- 20. मैं JSON ऐरे कैसे बना सकता हूं?
- 21. क्रोम ब्राउज़र में मशीन पर लोकहोस्ट में चल रही वेबसाइट को मैं कैसे देख सकता हूं?
- 22. मैं चल रहे पर्ल प्रक्रिया में डीबगर कैसे संलग्न कर सकता हूं?
- 23. मैं समूहबद्ध टेबलव्यू पृष्ठभूमि रंग जैसे बनावट पृष्ठभूमि (छवि पैलेट) रंग कैसे बना सकता हूं?
- 24. कोल्डफ्यूज़न में चल रही प्रक्रिया को मार दें?
- 25. क्लोजर में मैं "मानचित्र में आईडी जोड़ने" फ़ंक्शन कैसे बना सकता हूं?
- 26. एंड्रॉइड: जांचें कि मेरी सेवा पृष्ठभूमि में चल रही है
- 27. मैं लंबी अवधि (अनंत) पायथन प्रक्रिया कैसे चला सकता हूं?
- 28. जांचें कि प्रक्रिया हर मिनट चल रही है
- 29. मैं अपने डेटाबेस में चल रही अनुसूचित नौकरियों को कैसे सूचीबद्ध कर सकता हूं?
- 30. मैं सी में पृष्ठभूमि में एक प्रक्रिया कैसे निष्पादित करूं?
क्या यह आपको निष्पादन को रोकने की अनुमति देता है? – Zubair