2020-11-01 23:13:02 -06:00
|
|
|
#ifndef STORM_THREAD_CS_RW_LOCK_HPP
|
|
|
|
|
#define STORM_THREAD_CS_RW_LOCK_HPP
|
|
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
2020-12-02 20:04:02 -06:00
|
|
|
#if defined(WHOA_SYSTEM_WIN)
|
2020-12-01 17:40:37 -06:00
|
|
|
#include "storm/thread/win/SRWLock.hpp"
|
|
|
|
|
#endif
|
|
|
|
|
|
2020-12-02 20:04:02 -06:00
|
|
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
2020-11-01 23:13:02 -06:00
|
|
|
#include <pthread.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
class CSRWLock {
|
|
|
|
|
public:
|
|
|
|
|
// Member variables
|
2020-12-02 20:04:02 -06:00
|
|
|
#if defined(WHOA_SYSTEM_WIN)
|
2020-12-01 17:40:37 -06:00
|
|
|
SRWLock::SURWLOCK m_opaqueData;
|
2020-11-01 23:13:02 -06:00
|
|
|
#endif
|
|
|
|
|
|
2020-12-02 20:04:02 -06:00
|
|
|
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
|
2020-11-01 23:13:02 -06:00
|
|
|
pthread_rwlock_t m_lock;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Member functions
|
|
|
|
|
void Enter(int32_t forwriting);
|
|
|
|
|
void Leave(int32_t fromwriting);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|