mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-07 04:13:39 +00:00
51 lines
950 B
C++
51 lines
950 B
C++
#include <windows.h>
|
|
#include <Utils/SRWLock.h>
|
|
|
|
SRWLock::SRWLock() {
|
|
if (!inited) {
|
|
inited = true;
|
|
InitializeSRWLock(&srwlock);
|
|
}
|
|
inited = true;
|
|
}
|
|
|
|
void SRWLock::lock() {
|
|
if (!inited) {
|
|
inited = true;
|
|
InitializeSRWLock(&srwlock);
|
|
}
|
|
AcquireSRWLockExclusive(&srwlock);
|
|
}
|
|
|
|
bool SRWLock::try_lock() {
|
|
if (!inited) {
|
|
inited = true;
|
|
InitializeSRWLock(&srwlock);
|
|
}
|
|
return TryAcquireSRWLockExclusive(&srwlock);
|
|
}
|
|
|
|
void SRWLock::unlock() {
|
|
ReleaseSRWLockExclusive(&srwlock);
|
|
}
|
|
|
|
void SRWLock::lock_shared() {
|
|
if (!inited) {
|
|
inited = true;
|
|
InitializeSRWLock(&srwlock);
|
|
}
|
|
AcquireSRWLockShared(&srwlock);
|
|
}
|
|
|
|
bool SRWLock::try_lock_shared() {
|
|
if (!inited) {
|
|
inited = true;
|
|
InitializeSRWLock(&srwlock);
|
|
}
|
|
return TryAcquireSRWLockShared(&srwlock);
|
|
}
|
|
|
|
void SRWLock::unlock_shared() {
|
|
ReleaseSRWLockShared(&srwlock);
|
|
}
|