GO 使用channel进行同步 (缓冲channel)
2015-02-03 21:55
381 查看
上一篇文章提到了普通的channel用来进行线程的同步。Go语言里面还有一种缓冲式的channel。
ch := make(chan int, 100)
需要执行类型和缓冲区的大小。
ch := make(chan int, 100)
需要执行类型和缓冲区的大小。
package main import "fmt" func main() { c := make(chan int, 2) //建立int类型大小为2的缓冲区 c <- 1 //缓冲区1赋值为1 c <- 2 //缓冲区2赋值为2 fmt.Println(<-c) //输出缓冲区1 fmt.Println(<-c) //输出缓冲区2 }可以循环 for i := range c 来不断从 channel 接收值,直到它被关闭。
package main import ( "fmt" ) func fibonacci(n int, c chan int) { x, y := 1, 1 for i := 0; i < n; i++ { c <- x x, y = y, x+y } close(c) } func main() { c := make(chan int, 10) go fibonacci(cap(c)+2, c) for i := range c { fmt.Println(i) } }
相关文章推荐
- GO 使用channel进行同步 (channel 1)
- 用Apache JMeter进行性能测试之五(使用同步定时器元件)
- 使用RAPI对WM与PC进行同步通讯
- 使用windows自带ntp客户端进行时间同步的方法
- Merge(在一条语句中使用Insert,Update,Delete) 对两个表进行同步数据
- 使用VSTO把Groove和Outlook的约会进行同步(转)
- linux 使用rsync进行数据增量同步
- 使用事件(Event)进行进程同步
- 使用Git在Mac和Windows系统之间进行同步数据
- 使用EventWaitHandleSecurity进行程序间同步时,在非英语机器上程序hang住了。
- 配置 Windows 时间服务以使用外部时间源 进行时间同步
- 使用Winscp进行Linux到Windows的文件同步
- 使用rsync进行CentOS服务器之间的目录同步
- 使用rsync进行linux和windows文件同步
- 使用rdate进行时间同步
- 使用信号量进行线程间同步
- Linux下使用ntpdate进行时间同步
- SNMP 使用SNMP4J V2进行同步和异步 GET,SET