ๆไปฌๅฏไปฅไฝฟ็จ้้ๆฅๅๆญฅๅ็จไน้ด็ๆง่ก็ถๆใ ่ฟๅฟๆไธไธชไพๅญ๏ผไฝฟ็จ้ปๅกๆฅๆถ็ๆนๅผ๏ผๅฎ็ฐไบ็ญๅพ ๅฆไธไธชๅ็จๅฎๆใ ๅฆๆ้่ฆ็ญๅพ ๅคไธชๅ็จ๏ผWaitGroup ๆฏไธไธชๆดๅฅฝ็้ๆฉใ |
|
![]() ![]() package main |
|
import ( "fmt" "time" ) |
|
ๆไปฌๅฐ่ฆๅจๅ็จไธญ่ฟ่ก่ฟไธชๅฝๆฐใ
|
func worker(done chan bool) { fmt.Print("working...") time.Sleep(time.Second) fmt.Println("done") |
ๅ้ไธไธชๅผๆฅ้็ฅๆไปฌๅทฒ็ปๅฎๅทฅๅฆใ |
done <- true } |
func main() { |
|
่ฟ่กไธไธช worker ๅ็จ๏ผๅนถ็ปไบ็จไบ้็ฅ็้้ใ |
done := make(chan bool, 1) go worker(done) |
็จๅบๅฐไธ็ด้ปๅก๏ผ็ด่ณๆถๅฐ worker ไฝฟ็จ้้ๅ้็้็ฅใ |
<-done } |
$ go run channel-synchronization.go working...done |
|
ๅฆๆไฝ ๆ |
ไธไธไธชไพๅญ: ้้ๆนๅ