1。goroutine go的核心并发编程,轻量级县城。通过少量线程,大量服用GoRoutine(协程)。
嗲用方式:实用go func(){} 或者go 函数名
2.GoRoutine协程等待
应用场景,主线程执行完毕前,需要等待部分协程完成
实用方式:sync.WaitGroup方法
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// 具体逻辑代码
}()
wg.Wait() // 等待协程完成3.CSP模型(Communicating Sequential Processes)
通过channel(通道)传递数据
ch:=make(chan int)//创建通道
go func(){
ch<-1//向通道传入数据
}
value:=<-ch//接受ch通道内数据4.go协程常见问题:
协程彼此等待响应,导致程序卡死;解决方案:实用sync.WaitGroup
未关闭channel通道或者未等待协程完成:解决方案:实用close(ch)关闭协程
多个协程修改共享变量:解决方案:实用互斥锁Mutex方法进行保护
var mu sync.Mutex
mu.Lock()//开启互斥锁
//修改变量造作
mu.UnLock()//解锁原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。