Update 14.1.md

This commit is contained in:
glight2000
2015-12-23 15:31:04 +08:00
parent 7b62558d93
commit 12103c7a8d

View File

@@ -19,6 +19,13 @@ Go更倾向于其他的方式在诸多比较合适的范式中有个被称
协程工作在相同的地址空间中,所以共享内存的方式一定是同步的;这个可以使用`sync`包来实现(参见章节[9.3](9.3.md))不过我们很不鼓励这样做Go使用`channels`来同步协程(可以参见[14.2](14.2.md)等章节) 协程工作在相同的地址空间中,所以共享内存的方式一定是同步的;这个可以使用`sync`包来实现(参见章节[9.3](9.3.md))不过我们很不鼓励这样做Go使用`channels`来同步协程(可以参见[14.2](14.2.md)等章节)
当系统调用比如等待I/O阻塞协程时其他协程会继续在其他线程上工作。协程的设计隐藏了许多线程创建和管理方面的复杂工作。
协程是轻量的比线程更轻。它们痕迹非常不明显使用少量的内存和资源在堆中使用4K的堆内存就可以创建它们。因为创建非常廉价必要的时候可以轻松创建并运行大量的协程在同一个一个地址空间中100,000个连续的协程。并且它们对堆进行了分割从而动态的增加或缩减内存的使用堆的管理是自动的但不是由垃圾回收器管理的而是在协程退出后自动释放。
协程可以运行在多个操作系统线程之间也可以运行在线程之内让你可以很小的内存占用就可以处理大量的任务。由于操作系统线程上的协程时间片你可以使用少量的操作系统线程就能拥有任意多个提供服务的协程而且Go运行时可以聪明的意识到哪些协程被阻塞了暂时搁置它们并处理其他携程。
## 链接 ## 链接