23. 并发控制:Go 关键字
Goroutine 是 Golang 最强大的特性之一,Yak 完美继承了这一特性。
Yak 脚本与 Golang 的 Go 的作用都是相同的,但是需要注意一点的是,go 关键字可以用来调用 yak 的闭包函数
#
基本用法在 Golang 中,我们启动一个 Goroutine 通过以下操作启动
go func(){ // ...do some codes}()
在 yak 中,我们不仅兼容了上述写法,我们执行如下命令,都是等效的
// goroutine 启动来函数异步调用go func(){ /* do sth */}() // 兼容 Go 的写法
go fn(){ /* do sth */}() // 也可以使用fn关键字代替func关键字
go def(){ /* do sth */}() // 兼容 Python 定义方法的关键字
// 定义无参闭包函数并立即执行 Goroutinego fn{ /* do sth */}
go func{ /* do sth */}
go def{ /* do sth */}
#
并发控制yaklang可以非常自然的使用go的waitGroup,来完成协程的并发控制。
wg = sync.NewWaitGroup()wg.Add(2)
go func { defer wg.Done() println("in goroutine1")}
go func { defer wg.Done() println("in goroutine2")}
wg.Wait()