boost 线程库具有线程特定(本地)存储的抽象。我浏览了源代码,似乎 TSS 功能可以在任何现有线程的应用程序中使用,无论它是从 boost::thread 创建的天气如何——也就是说,这意味着某些回调已向内核注册以挂钩回调函数,当线程或进程超出范围时,该函数可能调用任何 TSS 对象的析构函数。我找到了这些回调。
我需要在各种 Web 服务器的工作线程中缓存来自 OpenSSL 的 HMAC_CTX(请参阅这个,详细的,关于我要做什么的问题),因此我不控制线程的生命周期 - 网络-服务器可以。因此,我将在不是由 boost::thread 创建的线程上使用 TSS 功能。
我只是想在开始实现缓存逻辑之前验证我的假设,我的逻辑有什么缺陷吗?