Go 协程
来源:互联网 发布:男性保健药品 知乎 编辑:程序博客网 时间:2024/05/30 22:46
channel通信:
package mainimport ( "fmt")//线程(协程)间通信:1.共享内存,2.通道//事实上Go语言主要使用消息机制(channel)来作为通信模型。func count1(ch chan int, i int) { fmt.Println("counter = ", i) ch <- 1}func main() { chs := make([]chan int, 10) for i := 0; i < 10; i++ { chs[i] = make(chan int) go count1(chs[i], i) } //索引key,value for _, ch := range (chs) { <-ch //阻塞读取channel数据,相当于同步 }}
共享内存通信:
package mainimport ( "fmt" "sync" "runtime")//线程(协程)间通信:1.共享内存,2.通道//事实上Go语言主要使用消息机制(channel)来作为通信模型。var counter int = 0func count(lock *sync.Mutex) { lock.Lock() counter++ fmt.Println("counter = ", counter) lock.Unlock()}func main() { lock := sync.Mutex{} for i := 0; i < 10; i++ { go count(&lock) } for { runtime.Gosched() //让出时间片 if counter >= 10 { break } }}
参考链接
阅读全文
0 0
- Go 协程
- 【Go】协程
- Go!
- GO
- GO !
- go
- Go
- Go.
- go
- GO!
- go
- Go
- go
- 【GO】
- go
- go
- GO
- Go
- 导出表格Util
- 背包问题V2
- index索引入门笔记
- 北岛的《回答》是回答 更是提问
- mysql在指定的一个字段后面添加一个字段
- Go 协程
- Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】
- java运行时不跑主函数
- JavaWeb项目缓存从 ehcache 切换到 redis
- Spark SQL之案例实战(四)
- 推荐几种靠谱的离职原因回答策略
- 12C的PDB使用RMAN不完全恢复drop user场景
- 反转链表
- Hibernate 事务