This commit is contained in:
songleo
2016-01-08 11:57:46 +08:00
parent bfa91c2470
commit 2df6179a14
2 changed files with 4 additions and 4 deletions

View File

@@ -125,7 +125,7 @@ At the end of main() // after 10s
`main()` 函数返回的时候,程序退出:它不会等待任何其他非 main 协程的结束。这就是为什么在服务器程序中,每一个请求都会启动一个协程来处理,`server()` 函数必须保持运行状态。通常使用一个无限循环来达到这样的目的。
另外,协程是独立的处理单元,一旦陆续启动一些协程,你无法确定他们是什么时候真正开始执行的。你的代码罗技必须独立于协程调用的顺序。
另外,协程是独立的处理单元,一旦陆续启动一些协程,你无法确定他们是什么时候真正开始执行的。你的代码逻辑必须独立于协程调用的顺序。
为了对比使用一个线程,连续调用的情况,移除 go 关键字,重新运行程序。

View File

@@ -16,7 +16,7 @@
未初始化的通道的值是nil。
所以通道稚嫩传输一种类型的数据,比如 `chan int` 或者 `chan string`,所有的类型都可以用于通道,空接口 `interface{}` 也可以。甚至可以(有时非常有用)创建通道的通道。
所以通道只能传输一种类型的数据,比如 `chan int` 或者 `chan string`,所有的类型都可以用于通道,空接口 `interface{}` 也可以。甚至可以(有时非常有用)创建通道的通道。
通道实际上是类型化消息的队列使数据得以传输。它是先进先出FIFO结构的所以可以保证发送给他们的元素的顺序有些人知道通道可以比作 Unix shells 中的双向管道tw-way pipe。通道也是引用类型所以我们使用 `make()` 函数来给它分配内存。这里先声明了一个字符串通道 ch1然后创建了它实例化
@@ -39,7 +39,7 @@ ch1 = make(chan string)
流向通道(发送)
`ch <- int1` 表示:用通道 ch 发送变量 int1二进制操作符,中缀 = 发送)
`ch <- int1` 表示:用通道 ch 发送变量 int1双目运算符,中缀 = 发送)
从通道流出(接收),三种方式: