スレッドセーフなコンテナクラスを最初から作成しようとすると、アクセスメソッドから値を返すという問題が発生しました。たとえば、Windowsの場合:
myNode getSomeData( )
{
EnterCriticalSection(& myCritSec);
myNode retobj;
// fill retobj with data from structure
LeaveCriticalSection(& myCritSec);
return retobj;
}
コードがクリティカルセクションをリリースした後、最初のスレッドが戻る前に別のスレッドがやって来てすぐに上書きできるため、このタイプのメソッドはスレッドセーフではないと思いretobj
ます。retobj
では、スレッドセーフな方法で発信者に戻るためのエレガントな方法は何でしょうか。