Skip to content

通道同步

go
package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Print("working...")
    time.Sleep(time.Second)
    fmt.Println("done")

    done <- true
}

func main() {

    done := make(chan bool, 1)
    go worker(done)

    <-done
}

这个例子的同步功能其实是利用 普通channel的阻塞机制。最后一个 <- done 其实是取值,只是没有任何变量接受而已