गोरोइन को समाप्त करने के लिए संकेत देना
गो में, गोरोइन समाप्ति को संभालना महत्वपूर्ण हो सकता है जब यह सुनिश्चित किया जाए कि एप्लिकेशन को सुचारू रूप से बंद किया जाए या संसाधन आवंटन का प्रबंधन किया जाए। यह लेख चल रहे गोरोइन को उसके निष्पादन को रोकने के लिए संकेत देने की एक तकनीक की पड़ताल करता है। लक्ष्य इस गोरोइन को समाप्त करना है यदि यह एक निर्दिष्ट समय सीमा से अधिक हो जाता है।
प्रारंभिक दृष्टिकोण में दो चैनलों का उपयोग करना शामिल है: एक संचार के लिए, और दूसरा सिग्नलिंग समाप्ति के लिए। हालाँकि, सिग्नलिंग चैनल से पढ़ने से गोरोइन अवरुद्ध हो जाएगा, जिससे उसका इच्छित उद्देश्य विफल हो जाएगा।
एक अतिरिक्त स्टॉप चैनल का उपयोग करनाएक प्रभावी समाधान एक अतिरिक्त स्टॉप चैनल पेश करना है , बहुत देर से, चान स्ट्रक्चर {} प्रकार का। गोरोइन के अंदर, संचार चैनल और स्टॉप चैनल दोनों की निगरानी के लिए एक चयन कथन का उपयोग किया जाता है। यदि टूलेट चैनल को एक मान प्राप्त होता है, तो गोरोइन अपने प्रोसेसिंग लूप को समाप्त करते हुए शानदार ढंग से वापस आ जाता है।
यहां संशोधित कोड स्निपेट है:
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