Go编程笔记(37)
2014-02-05 00:00
323 查看
channel默认上是阻塞的,也就是说,如果Channel满了,就阻塞写,如果Channel空了,就阻塞读。于是,我们就可以使用这种特性来同步我们的发送和接收端。
package main import "time" import "fmt" func main() { //创建两个channel - c1 c2 c1 := make(chan string) c2 := make(chan string) //创建两个goruntine来分别向这两个channel发送数据 go func() { time.Sleep(time.Second * 1) c1 <- "Hello" }() go func() { time.Sleep(time.Second * 1) c2 <- "World" }() //使用select来侦听两个channel for i := 0; i < 2; i++ { select { case msg1 := <-c1: fmt.Println("received", msg1) case msg2 := <-c2: fmt.Println("received", msg2) } } }
相关文章推荐
- Go编程笔记(8)
- Go编程笔记(19)
- go语言学习笔记之并发编程
- Go编程笔记(34)
- Go: 学习笔记1 让编程更有乐趣
- Go编程笔记(7)
- Go编程笔记(24)
- 58.笔记go语言——函数式编程
- Go 网络编程笔记
- Go编程笔记(6)
- Go编程笔记(5)
- Go编程笔记(32)
- Go编程笔记(3)
- Go编程笔记(30)
- ASP.NET 3.5核心编程学习笔记(37):缓存的使用
- Go学习笔记 - 关于Java、Python、Go编程思想的不同
- (37)21.3.6 并发 练习 16---Java编程思想之并发笔记
- Go编程笔记(38)
- go语言 基础编程学习笔记
- Go学习笔记:关于Java、Python、Go编程思想的不同