24 #include <core/threading/read_write_lock.h>
32 class ReadWriteLockData
35 pthread_rwlock_t rwlock;
59 rwlock_data =
new ReadWriteLockData();
61 #if defined __USE_UNIX98 || defined __USE_XOPEN2K
62 pthread_rwlockattr_t attr;
63 pthread_rwlockattr_init(&attr);
67 pthread_rwlockattr_setkind_np(&attr, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
70 pthread_rwlockattr_setkind_np(&attr, PTHREAD_RWLOCK_PREFER_READER_NP);
74 pthread_rwlock_init(&(rwlock_data->rwlock), &attr);
76 pthread_rwlock_init(&(rwlock_data->rwlock), NULL);
83 pthread_rwlock_destroy(&(rwlock_data->rwlock));
95 pthread_rwlock_rdlock(&(rwlock_data->rwlock));
106 pthread_rwlock_wrlock(&(rwlock_data->rwlock));
118 return (pthread_rwlock_tryrdlock(&(rwlock_data->rwlock)) == 0);
130 return (pthread_rwlock_trywrlock(&(rwlock_data->rwlock)) == 0);
139 pthread_rwlock_unlock(&(rwlock_data->rwlock));