C++ 手动清理boost::thread中特定于线程的资源
boost线程静态库不能与C++/CLI代码一起使用,因为它使用线程本地存储回调来清理特定于线程的数据。在构建boost库时,可以通过排除tss_pe.obj来禁用这些回调,这允许在托管代码中使用库,但意味着需要手动清理这些资源 这些都没有正式的文档记录,但我从各种bug/论坛帖子(例如)中拼凑出了这一手动清理需要的:C++ 手动清理boost::thread中特定于线程的资源,c++,multithreading,boost,c++-cli,thread-local-storage,C++,Multithreading,Boost,C++ Cli,Thread Local Storage,boost线程静态库不能与C++/CLI代码一起使用,因为它使用线程本地存储回调来清理特定于线程的数据。在构建boost库时,可以通过排除tss_pe.obj来禁用这些回调,这允许在托管代码中使用库,但意味着需要手动清理这些资源 这些都没有正式的文档记录,但我从各种bug/论坛帖子(例如)中拼凑出了这一手动清理需要的: 当退出“非由boost::thread管理”的线程时,调用_thread_exit()。我不清楚这到底意味着什么,或者为什么boost thread会负责清理它未管理的线程的资
- 当退出“非由boost::thread管理”的线程时,调用_thread_exit()。我不清楚这到底意味着什么,或者为什么boost thread会负责清理它未管理的线程的资源
- 也可能在main()的开头和结尾调用\u进程\u enter和\u进程\u exit李>
有人能提供一个更详细的解释,并举例说明我需要调用上述函数以避免在禁用自动清理时泄漏资源的确切情况吗 >由于您似乎正在创建COM组件,而不是修补代码< > Boo::线程< /代码>,我建议使用VisualC++(V110)标准库实现的
boost::thread
,在托管部件中仅使用.NET线程API。。。