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

#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:

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