首页 > 编程语言 > 详细

学习Go语言之使用channel避免竞态问题

时间:2019-05-27 10:07:11      阅读:30      评论:0      收藏:0      [点我收藏+]

标签:ack   waitgroup   add   wait   main   竞态   Go语言   pack   语言   

 1 // 使用channel避免竞态问题
 2 package main
 3 
 4 import (
 5     "fmt"
 6     "sync"
 7 )
 8 
 9 var (
10     i  int
11     wg sync.WaitGroup
12 )
13 
14 func AutoIncrease(ch chan int) {
15     defer wg.Done()
16     i = <-ch
17     i++
18     ch <- i
19 }
20 
21 func main() {
22     //通道读写时会阻塞
23     ch := make(chan int, 10)
24     ch <- 0
25     for k := 0; k < 10; k++ {
26         wg.Add(1)
27         go AutoIncrease(ch)
28     }
29     wg.Wait()
30     //此时channel中的值和i一样
31     // i := <-ch
32     fmt.Println(i)
33 }

 

学习Go语言之使用channel避免竞态问题

标签:ack   waitgroup   add   wait   main   竞态   Go语言   pack   语言   

原文:https://www.cnblogs.com/shi2310/p/10928890.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号