我在我的应用程序中使用 Boost.Spirit 和 Boost.Thread 库时遇到了崩溃。仅当我在主线程的进程生命周期内使用 Spirit 解析器时才会发生这种情况。
崩溃发生在退出时,似乎与 Spirit 解析器分配的线程特定存储的清理有关。它可能由于卸载 DLL 的顺序而崩溃,因为线程特定的内存是在已经卸载的 DLL 内分配的。然而,在应用程序本身退出之前,Boost.Thread DLL 不会被卸载。
有没有办法让我强制 Spirit 清除其线程特定的存储,例如当我收到进程分离通知时在我的 dll-main 中?
任何解决方案/提示将不胜感激。
PS!我的平台和设置:
- 视觉工作室 2005
- BOOST_ALL_DYN_LINK
- BOOST_SPIRIT_THREADSAFE