Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: SmartLight HelloThreadsYo
Homepage
Mutex Locker¶
This utility class is most useful when you have an activity that needs to be protected by a mutex that has multiple return points.
You would normally do this:
Using standard mutex access
Mutex myMutex;
void do_some_stuff()
{
myMutex.lock();
/* Do Stuff */
if (condition) {
myMutex.unlock();
return 0;
}
/* Call other method */
int temp = other_method(); // Temp so can unlock after function returns
myMutex.unlock();
return temp;
}
However, it's very easy to miss one of the unlock points which would later freeze the application.
Debugging this kind of error can be very hard.
The same example using MutexLocker:
Using a MutexLocker
Mutex myMutex;
int do_some_stuff()
{
MutexLocker locker(myMutex);
/* Do Stuff */
if (condition) {
return 0;
}
/* Call other method */
return other_method();
/* Mutex unlocks itself here */
}
No matter where or how your method returns, the mutex will always be unlocked as the MutexLocker goes out of scope.