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