ฉันมีสอง goroutines:หลัก worker
และเป็น helper
นั่นมันการหมุนไปสำหรับความช่วยเหลือบางอย่าง helper
ได้พวกเกิดข้อผิดพลาดดังนั้นฉันใช้เป็นช่องสื่อสารผิดพลาดจากการ helper
ไปที่ worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
ที่นี่เป็นยังไง helper()
เป็นชื่อ:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
คำถาม:
เป็นคำให้การ
err := <- c
บล็อกเขาก็บล็อกworker
? ฉันไม่คิดอย่างนั้นตั้งแต่ที่ช่อง buffered.ถ้ามันเป็นการปิดกั้นจะทำยังไงให้มันไม่ใช่การปิดกั้น? ของฉันสำคัญที่สุคือต้องมี
worker
และมันโทรบอกต่อไปด้วยเหลือของทำงานโดยไม่ รออยู่ สำหรับค่าที่จะปรากฎบนช่อง
ขอบคุณ
c
?