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

posted @ 2018-04-09 21:43  Joestar  阅读(271)  评论(0编辑  收藏  举报