00001
00011 #ifndef DEFINE_H_YLOCKOBJECT
00012 #define DEFINE_H_YLOCKOBJECT
00013
00014 #include <basic.h>
00015 #include <btron/taskcomm.h>
00016 #include "yexception.h"
00017 #include "ysemaphore.h"
00018
00024 class YLockObject {
00025 public:
00033 YLockObject(YSemaphore* sem, bool initialLock = true) {
00034 locked = false;
00035 semaphore = sem;
00036
00037 if (initialLock){
00038 lock();
00039 }
00040 }
00041
00046 ~YLockObject() {
00047 unlock();
00048 }
00049
00051 void lock() {
00052 if (!locked && semaphore != 0){
00053 semaphore->lock();
00054 locked = true;
00055 }
00056 }
00057
00059 void unlock() {
00060 if (locked && semaphore != 0){
00061 semaphore->unlock();
00062 locked = false;
00063 }
00064 }
00065
00066 private:
00068 YSemaphore* semaphore;
00069
00071 bool locked;
00072 };
00073
00074 #endif // DEFINE_H_YLOCKOBJECT