Я пытаюсь создать канал, который используется, чтобы убедиться, что все готово,Блокировка по каналу в другом месте только с одним сообщением в Голанге?
так что я могу продолжить процесс, примером может быть такой: playground
package main
import (
"fmt"
)
// done sends the channel a "okay" status.
func done(ok chan<- bool) {
ok <- true
}
// waiting is a function that waiting for everything's okay.
func waiting(ok <-chan bool) {
<-ok
// Do something here
// when everything's okay...
}
func main() {
ok := make(chan bool)
// Send the "ok" status once.
go done(ok)
// function A mockup
waiting(ok)
// function B mockup
waiting(ok)
fmt.Println("All Ok!")
}
и вот выход:
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]:
main.main()
/tmp/sandbox709143808/main.go:29 +0xc0
Я освобожденный послать ok <- true
раз,
то я могу использовать его в нескольких местах, и получить выход так:
All Ok!
Program exited.
, но я не уверен, как это сделать, какие-либо идеи?