Go में goroutine को सही तरीके से कैसे रोकें? बैकग्राउंड टास्क को समाप्त करने में समस्याएँ
सभी को नमस्ते! मैं एक शुरुआती Go डेवलपर हूँ, और मुझे goroutines को मैनेज करने में समस्या आ रही है। मैं एक छोटा सर्विस लिख रहा हूँ जो समय-समय पर बाहरी API की स्थिति जाँचता है और लोकल कैश को अपडेट करता है। इसके लिए मैं एक बैकग्राउंड goroutine को अनंत लूप और time.Sleep के साथ चला रहा हूँ।
समस्या यह है कि प्रोग्राम को समाप्त करते समय (जैसे Ctrl+C से) या goroutine को पुनः शुरू करने की आवश्यकता होने पर, मैं इसे सही तरीके से रोक नहीं पाता। अगर मैं केवल main को समाप्त करता हूँ, तो goroutine लटकी रहती है या panic हो जाती है। मैंने एक ग्लोबल फ्लैग `var running bool` का उपयोग करने और लूप में इसे जाँचने की कोशिश की, लेकिन यह तुरंत काम नहीं करता, और कभी-कभी goroutine I/O ऑपरेशन पर ब्लॉक हो जाती है।
यहाँ मेरे कोड का उदाहरण है:
```go
package main
import (
"fmt"
"time"
)
func worker() {
for {
fmt.Print