提升线程特定存储问题(boost / thread / tss.hpp)

时间:2010-04-12 15:56:07

标签: c++ webserver boost-thread worker-thread systems-programming

提升线程库有一个abstraction for thread specific (local) storage。我已经浏览了源代码,似乎TSS功能可以在任何现有线程的应用程序中使用,无论它是从boost :: thread --ie创建的天气,这意味着某些回调已在内核中注册到钩子在回调函数中,当线程或进程超出范围时,可以调用任何TSS对象的析构函数。我找到了这些回调。

我需要在各种网络服务器的工作线程中缓存来自OpenSSL的HMAC_CTX(参见this,详细的,我想要做的事情的问题),因此我无法控制生命周期线程 - 网络服务器。因此,我将在不是由boost :: thread创建的线程上使用TSS功能。

我只是想在开始实现缓存逻辑之前验证我的假设,我的逻辑中是否有任何缺陷?

2 个答案:

答案 0 :(得分:1)

你是对的。您可以将它用于不是由boost :: thread创建的线程。 如果你查看test_tss.cpp,你可以看到他们正好测试它,它应该适用于POSIX和Windows线程。

答案 1 :(得分:1)

这是部分正确的,因为主线程完成时不会调用析构函数。