У меня есть следующий фрагмент кода
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(), является потокобезопасным.
Правильно ли я понимаю?
Спасибо.