我在应用程序中使用Rocksdb,并且在关闭所有数据库实例后,仍然看到正在运行的线程 rocksdb :: ThreadPoolImpl :: Impl :: BGThread(unsigned long)()
因此,当我关闭应用程序时,我收到一个libc ++ abi.dylib:终止 我认为是由于上述错误。 如何避免这种情况并确保这些线程已关闭? 谢谢
答案 0 :(得分:3)
在rocksdb中运行着许多后台进程,例如Compactation,memtable flush,这些进程由单独的线程处理。为了安全地关闭ROCKSDB,您必须取消所有正在运行的后台作业。
CancelAllBackgroundWork(bool);
在关闭数据库之前调用此函数。传递布尔值作为参数,是要立即终止还是要等待后台作业完成然后终止。
现在调用rocksdb_close()
将完全关闭数据库