C&C++
发布时间:2022-04-03 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – Boost中的线程访问冲突在关闭时登录,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用boost记录的应用程序.在
关闭期间,它会在空指针访问时获得访问冲突.当我逐步执行
代码到失败点时,看起来boost :: log dll正在被解除分配,然后boost :: thread
代码尝试访问曾经被log dll占用的内存.
我没有在我自己的代码中使用任何boost线程,因此假设boost-thread dll由boost log使用.
为了确保在关机之前销毁所有接收器,我打电话给:core-> flush()和core-> remove_all_sinks()
我正在使用boost 1.60并且还尝试使用boost 1.63.结果相同.
有没有办法确保在退出/卸载dll之前完全关闭boost记录核心?
此问题可能与boost系统设置的语言环境对象有关.同样在
你的情况下,这个语言环境可能会在Boost.Log被取消初始化之前被销毁,从而导致崩溃.
根据boost docs特别是日志文件旋转模块.他们为类似案例Boost known issues提供了一种解决方法
解决方案是在主循环中初始化语言环境,以便boost有足够的周期来最后进行清理.
int main(int argc,char* argv[])
{
boost::filesystem::path::imbue(std::locale("C"));
initialize_log();
// ...
}
大佬总结
以上是大佬教程为你收集整理的c – Boost中的线程访问冲突在关闭时登录全部内容,希望文章能够帮你解决c – Boost中的线程访问冲突在关闭时登录所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。