2011-5-24

好几次把 Berkeley DB Java Edition 的代码下载下来想看,结果都没能开始做。然后就忘了,做别的事情去了。但愿我这次可以整明白。

Berkeley DB Java Edition在查询的时候是对记录以读写锁的方式加行锁,这种读写锁是写优先的,我猜就是JAVA的fair Read Write Lock。我比较不爽的是它的死锁检测,它无法直接检测死锁,它是通过限制每个锁持有的最长时间来打断死锁。通过设置je.txn.deadlockStackTrace可以打出当时的堆栈。je.txn.dumpLocks还会把当时的锁都打出来。我不明白为什么不直接用JRE本身的死锁检测功能呢?对于互斥锁,想描述清楚什么是死锁是一件很容易的事情,从而也很容易指明如何预防死锁。但是读写锁就比较麻烦,尤其是读写锁的功能实现更是五花八门。我在网上找了一半天,没有找到一篇文章系统的讲解读写锁的死锁。

睡了。明天再说。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥