Query: Will a MutexGuard object release before a function return value is copied?

T

Tropos

Query: Will a MutexGuard object release before a function return value
is copied?

Consider the C++ code:

class MutexGuard //A familiar sort of class for making mutexes
exception-safe
{
. . .
~MutexGuard(); //releases the mutex when the stack pops
}

int MyClass::increment(int value) //thread-safe
{
MutexGuard myguard(m_mutex); //lock the private member data
m_privatemember = value;
++m_privatemember;
return m_privatemember;
}

When the function completes, the new value of m_privatemember is
copied for
return-by-value, myguard is popped off the stack, its destructor runs,
and the mutex is released.

Is there any chance that the mutex is released before m_privatemember
is copied for return-by-value? If that happened, another thread could
nip in and change the value before it is copied.

Tropos
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,012
Latest member
RoxanneDzm

Latest Threads

Top