Critical Sections and return values in C++
===

In attempting to create a thread-safe container class from scratch, I've run into the problem of returning values from access methods. For example in Windows:

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

Now I suppose that this type of method is not at all thread-safe because after the code releases the critical section another thread is able to come along and immediately overwrite `retobj` before the first thread returns. So what is an elegant way to return `retobj` to the caller in a thread-safe manner?