thread_specific_ptr потокобезопасный доступ

У меня есть следующий фрагмент кода

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(), является потокобезопасным.

Правильно ли я понимаю?

Спасибо.


person KodeWarrior    schedule 01.07.2014    source источник


Ответы (1)


Да, каждый вызов будет получен разными (локальными) объектами потока.

person erenon    schedule 01.07.2014