rwlock.h 457 B

123456789101112131415161718192021
  1. #ifndef AL_RWLOCK_H
  2. #define AL_RWLOCK_H
  3. #include "AL/al.h"
  4. #include "atomic.h"
  5. typedef struct {
  6. volatile RefCount read_count;
  7. volatile RefCount write_count;
  8. volatile ALenum read_lock;
  9. volatile ALenum read_entry_lock;
  10. volatile ALenum write_lock;
  11. } RWLock;
  12. void RWLockInit(RWLock *lock);
  13. void ReadLock(RWLock *lock);
  14. void ReadUnlock(RWLock *lock);
  15. void WriteLock(RWLock *lock);
  16. void WriteUnlock(RWLock *lock);
  17. #endif /* AL_RWLOCK_H */