【发布时间】:2018-09-22 20:07:59
【问题描述】:
我在应用程序中使用 Rocksdb,在关闭所有数据库实例后,我仍然看到正在运行的线程 Rocksdb::ThreadPoolImpl::Impl::BGThread(unsigned long) ()
所以当我关闭应用程序时,我会收到一个 libc++abi.dylib: terminating 我认为是由于上述错误。 如何避免这种情况并确保这些线程已关闭? 谢谢
【问题讨论】:
标签: rocksdb
我在应用程序中使用 Rocksdb,在关闭所有数据库实例后,我仍然看到正在运行的线程 Rocksdb::ThreadPoolImpl::Impl::BGThread(unsigned long) ()
所以当我关闭应用程序时,我会收到一个 libc++abi.dylib: terminating 我认为是由于上述错误。 如何避免这种情况并确保这些线程已关闭? 谢谢
【问题讨论】:
标签: rocksdb
rocksdb 中运行着一堆后台进程,例如 Compaction、memtable flush,它们由单独的线程处理。要安全地关闭 ROCKSDB,您必须取消所有正在运行的后台作业。
CancelAllBackgroundWork(bool);
在关闭数据库之前调用这个函数。传递一个布尔值作为参数,无论您是想立即终止还是等待后台作业完成然后终止。
现在调用 rocksdb_close() 将完全关闭数据库
【讨论】: