1

次のコードスニペットがあります

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() を呼び出すコンストラクターがスレッドセーフであることを意味します。

私の理解は正しいですか?

ありがとう。

4

1 に答える 1

1

はい、各呼び出しは異なる (スレッド ローカル) オブジェクトによって受信されます。

于 2014-07-01T22:43:24.010 に答える