次のコードスニペットがあります
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() を呼び出すコンストラクターがスレッドセーフであることを意味します。
私の理解は正しいですか?
ありがとう。