Files
Viper_VRTE/lock.vp
T
2026-10-10 21:58:27 +08:00

38 lines
906 B
Plaintext

from stdint import *
from win32.win32base import *
from win32.win32sync import CRITICAL_SECTION, InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection, TryEnterCriticalSection
class Lock:
"""Mutex built on CRITICAL_SECTION, supports recursive locking.
Usage:
lock: Lock = Lock()
with lock:
# Critical section
pass
"""
cs: CRITICAL_SECTION
def __init__(self):
InitializeCriticalSection(&self.cs)
def acquire(self):
EnterCriticalSection(&self.cs)
def release(self):
LeaveCriticalSection(&self.cs)
def try_acquire(self) -> BOOL:
return TryEnterCriticalSection(&self.cs)
def __enter__(self) -> Lock*:
self.acquire()
return self
def __exit__(self):
self.release()
def delete(self):
DeleteCriticalSection(&self.cs)