码迷,mamicode.com
首页 > 其他好文 > 详细

channel vs mutex

时间:2014-09-12 16:39:53      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:div   on   c   r   as   记录   ash   Go   d   

记录许总演讲PPT指出的实践:

channel
– 本质上是一个 MessageQueue
– 非常正统的执行体间通讯设施
• sync.Mutex/RWMutex/Cond/etc
– 不要把 channel 当做万金油,该 Mutex 还是要

• 误区
– 用 channel 来做互斥 ( 正常应该让 Mutex 做 )
• 比如多个 goroutine 访问一组共享变量

• channel 的成本
– 作为消息队列, channel 成本原高于 Mutex

– 成本在哪?
• channel 内部有 Mutex ,因为它本身属于共享变量
• channel 内部可能有 Cond ,用来等待或唤醒满足条件的
goroutine
• 出让 cpu 并且让另一个 goroutine 获得执行机会,这个切
换周期不低,远高于 Mutex 检查竞争状态的成本 ( 后者通常
只是一个原子操作 )

channel vs mutex

标签:div   on   c   r   as   记录   ash   Go   d   

原文地址:http://www.cnblogs.com/amwicfai/p/3968370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!