|
@@ -125,7 +125,7 @@ At the end of main() // after 10s
|
|
|
|
|
|
|
|
当 `main()` 函数返回的时候,程序退出:它不会等待任何其他非 main 协程的结束。这就是为什么在服务器程序中,每一个请求都会启动一个协程来处理,`server()` 函数必须保持运行状态。通常使用一个无限循环来达到这样的目的。
|
|
当 `main()` 函数返回的时候,程序退出:它不会等待任何其他非 main 协程的结束。这就是为什么在服务器程序中,每一个请求都会启动一个协程来处理,`server()` 函数必须保持运行状态。通常使用一个无限循环来达到这样的目的。
|
|
|
|
|
|
|
|
-另外,协程是独立的处理单元,一旦陆续启动一些协程,你无法确定他们是什么时候真正开始执行的。你的代码罗技必须具独立于协程调用的顺序。
|
|
|
|
|
|
|
+另外,协程是独立的处理单元,一旦陆续启动一些协程,你无法确定他们是什么时候真正开始执行的。你的代码逻辑必须独立于协程调用的顺序。
|
|
|
|
|
|
|
|
为了对比使用一个线程,连续调用的情况,移除 go 关键字,重新运行程序。
|
|
为了对比使用一个线程,连续调用的情况,移除 go 关键字,重新运行程序。
|
|
|
|
|
|
|
@@ -149,7 +149,7 @@ At the end of main() // after 17 s
|
|
|
|
|
|
|
|
(译者注:标题中的“Go协程(goroutines)” 即是 14 章讲的协程指的是 Go 语言中的协程。而“协程(coroutines)”指的是其他语言中的协程概念,仅在本节出现。)
|
|
(译者注:标题中的“Go协程(goroutines)” 即是 14 章讲的协程指的是 Go 语言中的协程。而“协程(coroutines)”指的是其他语言中的协程概念,仅在本节出现。)
|
|
|
|
|
|
|
|
-在其他语言中,比如 C#,Lua 或者 Python 都有协程的概念。这个名字表明它和 G o协程有些相似,不过有两点不同:
|
|
|
|
|
|
|
+在其他语言中,比如 C#,Lua 或者 Python 都有协程的概念。这个名字表明它和 Go协程有些相似,不过有两点不同:
|
|
|
|
|
|
|
|
- Go 协程意味着并行(或者可以以并行的方式部署),协程一般来说不是这样的
|
|
- Go 协程意味着并行(或者可以以并行的方式部署),协程一般来说不是这样的
|
|
|
- Go 协程通过通道来通信;协程通过让出和恢复操作来通信
|
|
- Go 协程通过通道来通信;协程通过让出和恢复操作来通信
|