初级会员
  • 第 8462 位会员
  • nfwater
  • tanteng@qq.com
  • 2017-05-24 01:22:28
  • Offline
  • 23 9

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • ``` package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) var wg sync.WaitGroup wg.Add(10) for index := 1; index <= 10; index++ { go func(i int) { wg.Done() fmt.Println(i) }(index) } wg.Wait() } ``` 再看这个例子,输出结果: 10 1 2 3 4 5 6 7 8 9 给人的感觉就是始终最先执行最后一个goroutine,再顺序执行前面的goroutine
  • ``` package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() fmt.Println("A") }() go func() { defer wg.Done() fmt.Println("B") }() wg.Wait() } ``` 这个例子也是一样,先输出 B,再输出 A,这是为什么?
  • #6 @channel channel 只是保证每个 goroutine 同步,不符合说的场景
  • #2 @channel Redis 本来就在用,不是解决这个问题而引入,更好的方式是什么
  • 原文地址:https://blog.tanteng.me/2017/06/golang-function-done/ 错误之处请指出!