1. 用Mutex实现
package main import ( "fmt" "sync" ) var num int var mtx sync.Mutex var wg sync.WaitGroup func add() { mtx.Lock() defer mtx.Unlock() defer wg.Done() num += 1 } func main() { for i := 0; i < 100; i++ { wg.Add(1) go add() } wg.Wait() fmt.Println("num:", num) }
2. 使用chan实现
package main import ( "fmt" "sync" ) var num int func add(h chan int, wg *sync.WaitGroup) { defer wg.Done() h <- 1 num += 1 <-h } func main() { ch := make(chan int, 1) wg := &sync.WaitGroup{} for i := 0; i < 100; i++ { wg.Add(1) go add(ch, wg) } wg.Wait() fmt.Println("num:", num) }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- @synchronized 互斥锁
- golang 互斥锁
- 自旋锁和互斥锁区别 --- 经典
- golang 互斥锁 sync.Mutex
- 互斥量与临界区的区别
- Golang学习笔记之互斥锁(Mutex)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
P2P网贷投资手册
徐红伟 / 同济大学出版社 / 2015-4 / CNY 28.00
《P2P网贷投资手册》由“P2P网络借贷知多少”、“新手如何开始P2P网贷投资”和“如何确定适合自己的网贷投资策略”三部分组成。将网贷之家平台上众多投资人和从业者的智慧集结成册,分享给网贷投资上的同路人。一起来看看 《P2P网贷投资手册》 这本书的介绍吧!