go sync的并发同步简单用法

前端之家收集整理的这篇文章主要介绍了go sync的并发同步简单用法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//通过golang中的 goroutine 与sync.Mutex进行 并发同步 @H_404_14@package main @H_404_14@ @H_404_14@import ( @H_404_14@"fmt" @H_404_14@"runtime" @H_404_14@"sync" @H_404_14@) @H_404_14@ @H_404_14@var count int = 0 @H_404_14@ @H_404_14@func counter(lock *sync.Mutex) { @H_404_14@lock.Lock() @H_404_14@count++ @H_404_14@fmt.Println(count) @H_404_14@lock.Unlock() @H_404_14@} @H_404_14@ @H_404_14@func main() { @H_404_14@lock := &sync.Mutex{} //传递指针是为了防止 函数内的锁和 调用锁不一致 @H_404_14@for i := 0; i < 100000; i++ { @H_404_14@go counter(lock) @H_404_14@} @H_404_14@ @H_404_14@for { @H_404_14@lock.Lock() @H_404_14@c := count @H_404_14@lock.Unlock() @H_404_14@runtime.Gosched() //把时间片给别的goroutine 未来某个时刻运行该routine @H_404_14@if c >= 100000 { @H_404_14@fmt.Println("gorountine end") @H_404_14@break @H_404_14@} @H_404_14@} @H_404_14@}

猜你在找的Go相关文章