Mutex Locker utility class to lock/unlock mbed RTOS mutexes. Create and pass a mutex, it locks the mutex then unlocks it when destroyed.
Dependents: SmartLight HelloThreadsYo
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.
History
Disabled copy and assignment as this would be silly
2014-04-10, by Tomo2k [Thu, 10 Apr 2014 22:18:40 +0000] rev 3
Disabled copy and assignment as this would be silly
Update documentation
2014-04-10, by Tomo2k [Thu, 10 Apr 2014 22:14:23 +0000] rev 2
Update documentation
Lighter weight
2014-04-10, by Tomo2k [Thu, 10 Apr 2014 22:06:40 +0000] rev 1
Lighter weight
Simple mutex locker
2014-04-10, by Tomo2k [Thu, 10 Apr 2014 21:59:11 +0000] rev 0
Simple mutex locker