"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में चल रहे गोरोइन को शालीनतापूर्वक कैसे समाप्त करें?

गो में चल रहे गोरोइन को शालीनतापूर्वक कैसे समाप्त करें?

2024-11-04 को प्रकाशित
ब्राउज़ करें:319

How to Gracefully Terminate a Running Goroutine in Go?

गोरोइन को समाप्त करने के लिए संकेत देना

गो में, गोरोइन समाप्ति को संभालना महत्वपूर्ण हो सकता है जब यह सुनिश्चित किया जाए कि एप्लिकेशन को सुचारू रूप से बंद किया जाए या संसाधन आवंटन का प्रबंधन किया जाए। यह लेख चल रहे गोरोइन को उसके निष्पादन को रोकने के लिए संकेत देने की एक तकनीक की पड़ताल करता है। लक्ष्य इस गोरोइन को समाप्त करना है यदि यह एक निर्दिष्ट समय सीमा से अधिक हो जाता है।

प्रारंभिक दृष्टिकोण में दो चैनलों का उपयोग करना शामिल है: एक संचार के लिए, और दूसरा सिग्नलिंग समाप्ति के लिए। हालाँकि, सिग्नलिंग चैनल से पढ़ने से गोरोइन अवरुद्ध हो जाएगा, जिससे उसका इच्छित उद्देश्य विफल हो जाएगा।

एक अतिरिक्त स्टॉप चैनल का उपयोग करना

एक प्रभावी समाधान एक अतिरिक्त स्टॉप चैनल पेश करना है , बहुत देर से, चान स्ट्रक्चर {} प्रकार का। गोरोइन के अंदर, संचार चैनल और स्टॉप चैनल दोनों की निगरानी के लिए एक चयन कथन का उपयोग किया जाता है। यदि टूलेट चैनल को एक मान प्राप्त होता है, तो गोरोइन अपने प्रोसेसिंग लूप को समाप्त करते हुए शानदार ढंग से वापस आ जाता है।

यहां संशोधित कोड स्निपेट है:

func main() { // गोरोइन को रुकने का संकेत देने के लिए बहुत देर हो चुकी चैनल बहुत देर := बनाओ(चान संरचना{}) proCh := बनाओ (चान स्ट्रिंग) जाओ func() { के लिए { fmt.Println('कार्यरत') समय.नींद(1*समय.दूसरा) चुनना { मामला func main() { // tooLate channel to signal goroutine to stop tooLate := make(chan struct{}) proCh := make(chan string) go func() { for { fmt.Println("working") time.Sleep(1 * time.Second) select { case
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3