latch 与 mutex

从10g开始,ORACLE大量引入了mutex来取代latch。说实话,mutex这个名字困扰了我非常长的时间。
ORACLE对于mutex地描述是:比latch更灵活更轻量级的。
众所周知: 操作系统的lock机制有以下几种:
1.spinlock
2.mutex(互斥量)
3.Semaphore(信号量)
4.......................

其中只有spinlock是不切换上下文的,而mutex是切换上下文的。所以应该是spinlock比mutex轻量的多。我们知道,latch就是基于spinlock构建。所以,mutex怎么可能会比latch更轻量级?

困惑了很久,查阅了非常多的资料,但是查阅的资料越多,就越加确定,mutex不会比latch更轻量!而且,mutex需要切换上下文注定不适合高效的内存结构!我得出的结论和ORACLE得出的结论相反,Why?

本来已经放弃了对这个问题的纠结,突然有一天,在Tanel Põder的一篇文章中发现如下一句话:KGX mutexes are not OS mutexes!!!
恍然大悟。然后继续查阅,在11g中发现了这个参数:_kgx_spin_count
于是终于证明了自己的猜测,那就是,ORACLE KGX Mutex 同样是基于spinlock构建!
这万恶的名字。
标签: 暂无标签
kevin.zhang

写了 32 篇文章,拥有财富 308,被 10 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈