搜索leveldb看到了一个讨论:http://groups.google.com/group/szlug/browse_thread/thread/ba7945a26b74edc9?pli=1
他的主要问题是:两个线程 同时 进行 快速 打开leveldb 操作 关闭leveldb。而且 还是 while(1){}循环级别 ,,,leveldb伤不起啊 太快了,导致leveldb可能有所损坏。
所以 leveldb程序开发方法应该是: 在进程 开始 打开leveldb,然后各个线程 随便使用。最后程序 完毕的时候 delete db。这个在程序 关闭时候 也会自动调用。当然手动调用更好了。
我还学到了
status=leveldb::DestroyDB(dbpath,option);
和
status=leveldb::RepairDB(dbpath,option);
其中 dbpath="/tmp/test_db/"
leveldb::Options option;
但是我也发现了,如果在程序main开始的时候(已经建立db对象了),使用destroyDB,接下来还可以操作,delete db后,数据库会被清空!
如果使用repairDB,然后后面对数据库操作,在deleteDB,leveldb会乱掉的。。。所以 两个操作完毕后 立即 delete db;再建立db对象,再操作 才安全。
补充:http://duanple.blog.163.com/blog/static/70971767201171705113636/
译文 LevelDB:一个快速轻量级的key-value存储库(译) ,原文:http://leveldb.googlecode.com/svn/trunk/doc/index.html
这兄弟 翻译的 比我好多了!!!!!!!很赞!