LiteLoaderBDS-1.16.40/LiteLoader/include/llapi/utils/CsLock.h
2023-03-03 10:18:21 -08:00

33 lines
552 B
C++

#pragma once
#include "llapi/Global.h"
#include <Windows.h>
// ===== Critical Section Locker =====
// a simple lock which is much faster than std::mutex
class CsLock {
bool inited = false;
CRITICAL_SECTION cslock;
public:
LIAPI CsLock();
LIAPI ~CsLock();
LIAPI bool tryLock();
LIAPI bool lock();
LIAPI bool unlock();
};
class CsLockHolder {
CsLock& locker;
public:
LIAPI CsLockHolder(CsLock& lock)
: locker(lock) {
locker.lock();
}
LIAPI ~CsLockHolder() {
locker.unlock();
}
};