Критические секции и возвращаемые значения в C++

При попытке создать класс контейнера потока -с нуля я столкнулся с проблемой возврата значений из методов доступа. Например в Windows:

myNode getSomeData( )
{
  EnterCriticalSection(& myCritSec);
  myNode retobj;
  // fill retobj with data from structure
  LeaveCriticalSection(& myCritSec);
  return retobj;
}

Теперь я предполагаю, что этот тип метода вовсе не является безопасным для потоков -, потому что после того, как код освобождает критическую секцию, может появиться другой поток и немедленно перезаписать retobjдо того, как первый поток вернется. Итак, каков элегантный способ вернуть retobjвызывающему объекту потоком -безопасным образом?

7
задан ThomasMcLeod 25 July 2012 в 15:20
поделиться