2014-07-01 68 views
1

我有下面的代碼片段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()的構造函數是線程安全的。

我的理解是否正確?

謝謝。

回答

1

是的,每個調用都會被不同的(線程本地)對象接收。