24 #include <core/threading/read_write_lock.h> 33 class ReadWriteLockData
36 pthread_rwlock_t rwlock;
62 rwlock_data =
new ReadWriteLockData();
64 #if defined __USE_UNIX98 || defined __USE_XOPEN2K 65 pthread_rwlockattr_t attr;
66 pthread_rwlockattr_init( &attr );
69 case RWLockPolicyPreferWriter:
70 pthread_rwlockattr_setkind_np( &attr, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP );
72 case RWLockPolicyPreferReader:
73 pthread_rwlockattr_setkind_np( &attr, PTHREAD_RWLOCK_PREFER_READER_NP );
77 pthread_rwlock_init( &(rwlock_data->rwlock), &attr );
79 pthread_rwlock_init( &(rwlock_data->rwlock), NULL );
87 pthread_rwlock_destroy( &(rwlock_data->rwlock) );
100 pthread_rwlock_rdlock( &(rwlock_data->rwlock) );
112 pthread_rwlock_wrlock( &(rwlock_data->rwlock) );
125 return ( pthread_rwlock_tryrdlock( &(rwlock_data->rwlock) ) == 0 );
138 return ( pthread_rwlock_trywrlock( &(rwlock_data->rwlock) ) == 0 );
148 pthread_rwlock_unlock( &(rwlock_data->rwlock) );
void lock_for_read()
Aquire a reader lock.
bool try_lock_for_write()
Tries to aquire a writer lock.
bool try_lock_for_read()
Tries to aquire a reader lock.
Fawkes library namespace.
void lock_for_write()
Aquire a writer lock.
ReadWriteLock(ReadWriteLockPolicy policy=RWLockPolicyPreferWriter)
Constructor.
virtual ~ReadWriteLock()
Destructor.
void unlock()
Release the lock.
ReadWriteLockPolicy
The policy to use for the read/write lock.