包:
"github.com/farseer-go/async"
当我们需要并行执行部分函数且阻塞等待这些方法执行完成后再继续往下执行, 或者当需要异步并行执行部分方法,且执行完成后执行回调方法时,可使用async组件。
本着farseer-go极简、优雅风格,使用async组件也是非常简单的:
演示:
var count = 0
worker := async.New()
worker.Add(func() { count += 1})
worker.Add(func() { count += 2})
worker.Wait() // 阻塞等待,直到两个函数执行完
count *= 2 // 由于阻塞,所以这里最后执行
// count = 6 // 最终结果
func ContinueWith(callbacks ...func())
callbacks
:执行回调方法,当并行任务执行完后,以非阻塞方式执行callbacks
演示:
var count = 0
worker := async.New()
worker.Add(func() { count += 1})
worker.Add(func() { count += 2 })
worker.ContinueWith(func() { count += 3 })
count = 10 // 由于异步,这里会优先执行
time.Sleep(10 * time.Millisecond)
// count = 16 // 最终结果