24#include <core/threading/read_write_lock.h>
32class 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));
bool try_lock_for_read()
Tries to aquire a reader lock.
void unlock()
Release the lock.
ReadWriteLockPolicy
The policy to use for the read/write lock.
@ RWLockPolicyPreferWriter
Prefer writers over readers.
@ RWLockPolicyPreferReader
Prefer readers over writers.
void lock_for_read()
Aquire a reader lock.
void lock_for_write()
Aquire a writer lock.
ReadWriteLock(ReadWriteLockPolicy policy=RWLockPolicyPreferWriter)
Constructor.
bool try_lock_for_write()
Tries to aquire a writer lock.
virtual ~ReadWriteLock()
Destructor.
Fawkes library namespace.