8.7. Goroutines
Go语言中使用go可以启动一个goroutine。goroutine 和线程的概念类似,和程序共享一个地址空间。
goroutines和支持多路并发草组系统中的协程(coroutines)类似,用户不用关心具体 的实现细节。
func server(i int) {
for {
print(i)
sys.sleep(10)
}
}
go server(1)
go server(2)
(需要注意的是server函数中的for循环语句和 C++ while (true)的循环类似。)
Goroutines资源开销小,比较廉价。
go也可以用于启动新定义的内部函数(闭包)为Goroutines。
var g int
go func(i int) {
s := 0
for j := 0; j < i; j++ { s += j }
g = s
}(1000) // Passes argument 1000 to the function literal.