00001 #include "system_abstraction.h" 00002 00003 class PThreadRWLock 00004 { 00005 public: 00006 PThreadRWLock(){pthread_rwlock_init(&rwlock, NULL);} 00007 ~PThreadRWLock(){pthread_rwlock_destroy(&rwlock);} 00008 void enter_read(void) {pthread_rwlock_rdlock(&rwlock);} 00009 void leave_read(void) {pthread_rwlock_unlock(&rwlock);} 00010 void enter_write(void) {pthread_rwlock_wrlock(&rwlock);} 00011 void leave_write(void) {pthread_rwlock_unlock(&rwlock);} 00012 static const char *name() { return "PThreadRWLock"; } 00013 00014 private: 00015 pthread_rwlock_t rwlock; 00016 }; 00017