Golang 并发控制执行顺序

delaywu · · 673 次点击 · 开始浏览    置顶
``` package main import ( "fmt" "sync" ) var ordered1 chan struct{} var ordered2 chan struct{} func main(){ ordered1 = make(chan struct{}) ordered2 = make(chan struct{}) wg:=Wait(Job1,Job2,Job3) wg.Wait() fmt.Println("执行完毕") } func Job1() { fmt.Println("JOB1") ordered1<- struct{}{} } func Job2() { <-ordered1 fmt.Println("JOB2") defer func() { ordered2<- struct{}{} }() } func Job3() { <-ordered2 defer fmt.Println("JOB3") } type JobFunction func() func Wait(jobFuns ...JobFunction) *sync.WaitGroup { var wg = &sync.WaitGroup{} for _, fn := range jobFuns { wg.Add(1) go func(f func()) { defer wg.Done() f() }(fn) } return wg } ``` ![Snipaste_2021-09-27_15-36-42.png](https://static.studygolang.com/210927/f3d741c047aeadfd152b07c24e839450.png)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

673 次点击  
加入收藏 微博
1 回复  |  直到 2021-09-28 17:19:58
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传