mirror of
https://github.com/quizhizhe/LiteLoaderBDS-1.16.40.git
synced 2025-06-06 12:03:39 +00:00
33 lines
552 B
C++
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();
|
|
}
|
|
};
|