60 virtual const char*
what()
const throw() {
return "Thread::RWLockError";}
104 pthread_rwlock_t pthr_rwlock;
144 int reader_lock() noexcept {
return pthread_rwlock_rdlock(&pthr_rwlock);}
181 int writer_lock() noexcept {
return pthread_rwlock_wrlock(&pthr_rwlock);}
213 int unlock() noexcept {
return pthread_rwlock_unlock(&pthr_rwlock);}
230 ~RWLock() {pthread_rwlock_destroy(&pthr_rwlock);}
445 int lock() noexcept {
int ret = rw_lock.
reader_lock();
if (!owner) owner = !ret;
return ret;}
483 int unlock() noexcept {
int ret = rw_lock.
unlock();
if (owner) owner = ret;
return ret;}
730 int lock() noexcept {
int ret = rw_lock.
writer_lock();
if (!owner) owner = !ret;
return ret;}
762 int unlock() noexcept {
int ret = rw_lock.
unlock();
if (owner) owner = ret;
return ret;}