![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang协程并发同步
还是无聊的人~
这个作者很懒,什么都没留下…
展开
-
golang协程并发同步-互斥锁
func main() { num := 0 lock := sync.Mutex{} wg :=sync.WaitGroup{} wg.Add(2) go add(&num,&lock,&wg)//需要传入同一个锁 go reduce(&num,&lock,&wg) wg.Wait()//等待协程完成 fmt.Println(num...原创 2019-07-20 14:44:53 · 945 阅读 · 0 评论 -
golang协程并发同步-死锁问题
死锁产生条件:互斥,占有并等待,不可抢占,循环等待type Account struct { Id string Balance float64 lock sync.Mutex}func (a *Account) deposit(amount float64){ a.Balance += amount}func (a *Account) withdrew(amount floa...原创 2019-07-20 15:36:04 · 1152 阅读 · 0 评论 -
golang协程并发同步-信号量
只允许1个进入临界区的是互斥, 允许多个进入临界区的是信号量.func toilet(i int,ch chan int,wg *sync.WaitGroup){ fmt.Println(i,"进入厕所") rand.Seed(int64(i)) t := rand.Intn(10) time.Sleep(time.Duration(t)*time.Second)//随机时间 fmt....原创 2019-07-20 16:40:36 · 641 阅读 · 0 评论 -
golang协程并发同步-条件变量
条件变量:到一定条件或事件再处理数据用于很典型的生成-消费模型func main(){ proch := make(chan bool,1) conch := make(chan bool,1) wg := sync.WaitGroup{} wg.Add(2) go consume(conch,proch,&wg) go producer(proch,conch,&...原创 2019-07-20 17:44:45 · 709 阅读 · 0 评论