thread_specific_ptr线程安全访问

时间:2014-07-01 22:34:41

标签: boost boost-thread thread-local thread-local-storage

我有以下代码段

class MCSLock
{
  static boost::thread_specific_ptr< mcs_lock > tls_node;

  public:
  MCSLock()
  {
   if( tls_node.get() == 0 )
     tls_node.reset( new mcs_lock() );
  }
};

我的理解是每个线程都有自己的空间允许tls_node。这意味着 我们调用get()和reset()的构造函数是线程安全的。

我的理解是否正确?

感谢。

1 个答案:

答案 0 :(得分:1)

是的,每个调用都将由不同的(线程本地)对象接收。