代码之家  ›  专栏  ›  技术社区  ›  Hassan Syed

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

  •  3
  • Hassan Syed  · 技术社区  · 14 年前

    boost线程库有一个 abstraction for thread specific (local) storage . 我浏览了一下源代码,似乎tss功能可以在任何现有线程的应用程序中使用,而不管它是从boost::thread创建的,也就是说,这意味着某些回调是在内核中注册的,以挂接在当线程或进程超出范围时,可以调用任何tss对象的析构函数。我找到了这些回音。

    我需要在各种web服务器的工作线程中缓存来自openssl的hmac_ctx(请参见 this ,详细的,关于我要做什么的问题),因此我不能控制线程的生命周期——Web服务器可以。因此,我将在不是由boost::thread创建的线程上使用tss功能。

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Eddy Pronk    14 年前

    你说得对。您可以将它用于不是由boost::thread创建的线程。 如果您在test_tss.cpp中查看,您可以看到它们正是在测试这一点,并且它应该可以与posix和windows线程一起工作。

        2
  •  1
  •   Vicente Botet Escriba    14 年前

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