📄 mymutex_unix.cpp
字号:
#include <pthread.h>typedef pthread_mutex_t MY_MUTEX_T;#include "mymutex.h"#include "mymutex_p.h"#include <errno.h>#include <string.h>// Private class declarationsclass MyRealMutexPrivate:public MyMutexPrivate{public: MyRealMutexPrivate (); void lock (); void unlock (); bool locked (); bool trylock ();};// Private class implementation// base destructorMyMutexPrivate::~MyMutexPrivate (){ pthread_mutex_destroy (&handle);}// real mutex classMyRealMutexPrivate::MyRealMutexPrivate (){ pthread_mutexattr_t attr; pthread_mutexattr_init (&attr); pthread_mutexattr_settype (&attr, 0); pthread_mutex_init (&handle, &attr); pthread_mutexattr_destroy (&attr);}void MyRealMutexPrivate::lock (){ pthread_mutex_lock (&handle);}void MyRealMutexPrivate::unlock (){ pthread_mutex_unlock (&handle);}bool MyRealMutexPrivate::locked (){ int ret = pthread_mutex_trylock (&handle); if (ret == EBUSY) { return true; } else if (ret) { } else pthread_mutex_unlock (&handle); return false;}bool MyRealMutexPrivate::trylock (){ int ret = pthread_mutex_trylock (&handle); if (ret == EBUSY) { return false; } else if (ret) { return false; } return true;}MyMutex::MyMutex (){ d = new MyRealMutexPrivate ();}MyMutex::~MyMutex (){ delete d;}void MyMutex::lock (){ d->lock ();}void MyMutex::unlock (){ d->unlock ();}bool MyMutex::locked (){ return d->locked ();}bool MyMutex::tryLock (){ return d->trylock ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -