boost thread静态库不能与C ++ / CLI代码一起使用,因为它使用线程本地存储回调来清理特定于线程的数据。可以通过在构建boost库时排除tss_pe.obj来禁用这些回调,这样可以在托管代码中使用库,但这意味着需要手动清理这些资源。
这些都没有正式记录,但我已经从这个手动清理所需的各种错误/论坛帖子(例如https://svn.boost.org/trac/boost/ticket/1848)拼凑而成:
作为以前没有使用线程本地存储的库的新用户,我想确保我完全理解这些简洁的指南。我将在COM DLL中使用来自非托管代码的boost线程,该DLL也包含几个托管类。
有人可以通过示例提供更详细的解释,说明我需要调用上述函数的确切情况,以避免在禁用自动清理时泄漏资源吗?