摘要: untime.Gosched()用于让出CPU时间片。这就像跑接力赛,A跑了一会碰到代码runtime.Gosched()就把接力棒交给B了,A歇着了,B继续跑。看代码:package main import ("fmt""runtime") func say(s string) {for i :=... 阅读全文
posted @ 2015-05-02 21:28 klain 阅读(10207) 评论(1) 推荐(1) 编辑
摘要: 读写锁是针对于读写操作的互斥锁。基本遵循两大原则:1、可以随便读。多个goroutin同时读。2、写的时候,啥都不能干。不能读,也不能写。解释:在32位的操作系统中,针对int64类型值的读操作和写操作不可能只由一个CPU指令完成。如果一个写的操作刚执行完了第一个指令,时间片换给另一个读的协程,这就... 阅读全文
posted @ 2015-05-02 21:26 klain 阅读(3098) 评论(0) 推荐(1) 编辑
摘要: go mutex是互斥锁,只有Lock和Unlock两个方法,在这两个方法之间的代码不能被多个goroutins同时调用到。看代码:package main import ("fmt""sync""time") var m *sync.Mutex func main() {m = new(sync.... 阅读全文
posted @ 2015-05-02 21:24 klain 阅读(924) 评论(0) 推荐(1) 编辑