16typedef SRWLOCK rwlock_t;
19typedef pthread_rwlock_t rwlock_t;
31static inline bool rwlock_init(rwlock_t* lock) {
32 InitializeSRWLock(lock);
42static inline void rwlock_rdlock(rwlock_t* lock) { AcquireSRWLockShared(lock); }
50static inline void rwlock_wrlock(rwlock_t* lock) { AcquireSRWLockExclusive(lock); }
57static inline void rwlock_unlock_rd(rwlock_t* lock) { ReleaseSRWLockShared(lock); }
64static inline void rwlock_unlock_wr(rwlock_t* lock) { ReleaseSRWLockExclusive(lock); }
72static inline void rwlock_destroy(rwlock_t* lock) {
83static inline bool rwlock_init(rwlock_t* lock) {
return pthread_rwlock_init(lock, NULL) == 0; }
91static inline void rwlock_rdlock(rwlock_t* lock) { pthread_rwlock_rdlock(lock); }
99static inline void rwlock_wrlock(rwlock_t* lock) { pthread_rwlock_wrlock(lock); }
106static inline void rwlock_unlock_rd(rwlock_t* lock) { pthread_rwlock_unlock(lock); }
113static inline void rwlock_unlock_wr(rwlock_t* lock) { pthread_rwlock_unlock(lock); }
121static inline void rwlock_destroy(rwlock_t* lock) { pthread_rwlock_destroy(lock); }