From de9a7c7f5d7b92a9819997bfa1056a1ebd44fa36 Mon Sep 17 00:00:00 2001 From: glight2000 <173959153@qq.com> Date: Wed, 23 Dec 2015 17:37:53 +0800 Subject: [PATCH] Update 14.1.md --- eBook/14.1.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eBook/14.1.md b/eBook/14.1.md index ac9e6d9..86c2b76 100644 --- a/eBook/14.1.md +++ b/eBook/14.1.md @@ -37,7 +37,15 @@ Go更倾向于其他的方式,在诸多比较合适的范式中,有个被称 ## 14.1.2 并发和并行的差异 -Go的并发原语提供了良好的并发设计基础: +Go的并发原语提供了良好的并发设计基础:表达程序结构以便表示独立地执行的动作;所以Go的的重点不在于并行的首要位置:并发程序可能是并行的,也可能不是。并行是一种通过使用多处理器以提高速度的能力。但往往是,一个设计良好的并发程序在并行方面的表现也非常出色。 + +在当前的运行时(2012年一月)实现中,Go默认没有并行指令,只有一个独立的核心或处理器被专门用于Go程序,不论它启动了多少个协程;所以这些协程是并发运行的,但他们不是并行运行的:同一时间只有一个协程会处在运行状态。 + +这个情况在以后可能会发生改变,不过届时,为了使你的程序可以使用多个核心运行,这时协程就真正的是并行运行了,你必须使用`GOMAXPROCS`变量。 + +这会告诉运行时有多少个协程同时执行。 + +并且只有gc编译器真正实现了协程,适当的把协程映射到操作系统线程。使用`gccgo`编译器,会为每一个协程创建操作系统线程。 ## 链接