我有以下代码段
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()的构造函数是线程安全的。
我的理解是否正确?
感谢。
答案 0 :(得分:1)
是的,每个调用都将由不同的(线程本地)对象接收。