weicao/cascadb — pull request #10 by kedebug (2013-12-16 07:32:53+00:00)
Title: fix a lock contention issue

考虑一种极端的并发情况：
1. 假设当前根结点是 x，线程 a, b 同时写入数据
2. a 此时持有 x 的 write_lock() 准备分裂操作，b 此时持有 x 的 read_lock() 等待 a 线程完成操作写入
3. 极端情况考虑，此时缓冲树增高，产生新的根节点 y，但是 b 将要 write 的 msg 成为 y 的右子树部分（即新分裂的部分）
4. b 终于得到 read_lock() 准备写操作，但是得到的是 x 的读权限，并非新的跟节点 y
可想而知，会有bug产生。我对代码进行简单的修改，可以在不损失效率的情况下，避免这种竞态环境下错误的产生。