अगर मैं एक धारावाहिक कतार है, मैं कैसे, मुख्य थ्रेड से, यह बताने के तुरंत निष्पादन बंद करो और अपने कार्यों के सभी रद्द करने के लिए कर सकते हैं?प्रेषण कतार में कार्यों के निष्पादन को कैसे रोकें?
उत्तर
मुझे यकीन नहीं है कि आप निष्पादित एक मौजूदा ब्लॉक को रोक सकते हैं, लेकिन आप कतार को किसी भी नई कतार वस्तुओं को निष्पादित करने से रोकने के लिए dispatch_suspend को कॉल कर सकते हैं। फिर आप निष्पादन को पुनरारंभ करने के लिए dispatch_resume को कॉल कर सकते हैं (लेकिन ऐसा लगता है कि आप ऐसा नहीं करना चाहते हैं)।
cancelAllOperations NSOperationQueue पर देखें। यह सुनिश्चित करने के लिए अभी भी आप पर निर्भर है कि आपके ऑपरेशन रद्द संदेश को सही तरीके से संभाल लें।
यह एक बहुत आम सवाल है, और एक मेरे द्वारा उत्तरित से पहले:
संक्षिप्त उत्तर है कि GCD एक रद्द एपीआई नहीं है; आपको अपने रद्दीकरण कोड को स्वयं लागू करना होगा। मेरे उत्तर में, ऊपर, मैं मूल रूप से दिखाता हूं कि यह कैसे किया जा सकता है।
एक अन्य समाधान पुराने कतार फेंक और एक नया बनाने के लिए है। इससे मेरा काम बनता है। यह एक सरणी को हटाना है, आप उस पर हर तत्व को हटा सकते हैं या आप पुराने को बदलने के लिए बस एक नया बना सकते हैं।
iOS के 9/ओएस एक्स 10.11 के रूप में गैर तुच्छ खुद के तर्क को लागू करने के बिना एक प्रेषण कतार से लंबित कार्य खाली करने के लिए कोई रास्ता नहीं है।
आप एक प्रेषण कतार रद्द करने के लिए एक की जरूरत है, तो आप NSOperationQueue
जो इस और अधिक प्रदान करता है का उपयोग कर से बेहतर हो सकता है। उदाहरण के लिए, यहाँ आप कैसे एक कतार "अभी नहीं" है:
आप Swift
DispatchWorkItem
वर्ग का उपयोग कर रहे हैं तो भी काम करता है इकाइयों को व्यक्तिगत रूप से रद्द कर दिया।
कार्य आइटम आप काम की व्यक्तिगत इकाइयों सीधे के गुणों को कॉन्फ़िगर करने के लिए अनुमति देते हैं। वे आपको पूरा होने की प्रतीक्षा करने, उनके पूरा होने के बारे में अधिसूचित होने और/या उन्हें रद्द करने के प्रयोजनों के लिए अलग-अलग कार्य इकाइयों को संबोधित करने की अनुमति भी देते हैं। (आईओएस 8.0+ मैकोज़ 10.10+ में उपयोग के लिए उपलब्ध)।
DispatchWorkItem निष्पादित किया जा सकता है जो काम किया जा सकता है। एक कार्य आइटम डिस्पैच्यूयूयू और डिस्पैच समूह में प्रेषित किया जा सकता है। एक DispatchWorkItem भी एक DispatchSource घटना, पंजीकरण के रूप में स्थापित किया जा सकता है, या हैंडलर रद्द कर दें।
↳ https://developer.apple.com/reference/dispatch/dispatchworkitem
तीर का उपयोग करने के लिए अच्छा विचार :) – Vyacheslav
- 1. स्थान प्रबंधक एक प्रेषण कतार
- 2. टेम्पलेट कार्यों की गतिशील प्रेषण?
- 3. एक जीसीडी प्रेषण कतार से कतारबद्ध ब्लॉक को कैसे निकालें?
- 4. रोकें निष्पादन
- 5. Grails में नौकरी के समवर्ती निष्पादन को कैसे रोकें?
- 6. निष्पादन से रेल नियंत्रक को कैसे रोकें?
- 7. एक vbscript निष्पादन को कैसे रोकें?
- 8. समवर्ती जावास्क्रिप्ट निष्पादन को कैसे रोकें?
- 9. मैं सेलेरी कार्यों के निष्पादन को कैसे रोक सकता हूं?
- 10. कमांड लाइन से जावा प्रोग्राम के निष्पादन को कैसे रोकें?
- 11. जीडीबी ब्रेकपॉइंट के बिना निष्पादन को कैसे रोकें?
- 12. निष्पादन के बाद बाहर निकलने से जीनोम टर्मिनल को रोकें
- 13. jQuery कोड को बहुत अधिक घोंसले कार्यों से कैसे रोकें?
- 14. लंबी निष्पादन धागे को सावधानी से कैसे रोकें?
- 15. पायथन नाक ढांचा: पहली विफलता पर निष्पादन को कैसे रोकें
- 16. JDialog खुला होने पर निष्पादन को कैसे रोकें
- 17. क्या प्रत्येक एनएसटीएचड स्वचालित रूप से एक प्रेषण कतार है?
- 18. कैसे प्रेषण कतार (सीरियल या समवर्ती) के प्रकार का पता लगाने के लिए?
- 19. ट्रिगर्स के पारस्परिक रूप से पुनरावर्ती निष्पादन को रोकें?
- 20. जावास्क्रिप्ट फ़ंक्शन (क्लाइंट साइड) के निष्पादन को रोकें या इसे
- 21. एजेंट को किसी कार्रवाई को प्रेषित करने के संबंध में क्लोजर के "प्रेषण" और "प्रेषण" कार्यों के बीच क्या अंतर है?
- 22. सी # में डबल प्रेषण?
- 23. सेलेरी में एक विशिष्ट कतार में कार्यों की एक श्रृंखला को कैसे रूट किया जाए?
- 24. थ्रेडपूल में धागे को कैसे रोकें
- 25. अभिव्यक्ति के साथ एस 4 विधियों को प्रेषण के रूप में प्रेषण
- 26. प्रेषण कब करें()?
- 27. जावा में किसी निश्चित समय के बाद निष्पादन को कैसे रोकें?
- 28. नए निष्पादन से पहले Jquery में पिछले सभी एनिमेशन को कैसे रोकें?
- 29. फ़ॉर्म को कैसे रोकें
- 30. एनएसआईएनवोकेशन ऑपरेशन को कैसे रोकें?
लेकिन आप उस कैसे करते हो ?? – Fattie
मुझे नहीं पता कि आप यह कैसे करते हैं, लेकिन मुझे नहीं लगता कि यह काम करेगा। आपको कतार जारी करनी है, लेकिन कतार पर प्रत्येक ब्लॉक इसके संदर्भ को बरकरार रखता है, इसलिए जब तक सभी ब्लॉक पूर्ण नहीं होते हैं, तब तक इसे स्मृति से साफ़ नहीं किया जाएगा। tl; डॉ यह भारी स्मृति रिसाव का कारण बन जाएगा। – phreakhead