025_go语言中的通道同步
代码演示
package main import "fmt" import "time" func worker(done chan bool) { fmt.Println("working...") time.Sleep(time.Second) fmt.Println("done") done <- true } func main() { done := make(chan bool, 1) go worker(done) <-done }
代码运行结果
working... done
代码解读:
通道同步,可以利用阻塞的方式,来等待一个协程的状态同步动作
即在程序运行过程中一直阻塞,直到收到协程用于通知状态结束的动作
以上例子,是在一个函数中的结尾,将函数结束的done动作发送到通道,而在main函数结尾有一个阻塞,直到收到协程的done