1
0
mirror of https://github.com/janet-lang/janet synced 2026-04-17 12:21:27 +00:00

Compare commits

...

1 Commits

Author SHA1 Message Date
Calvin Rose
624afe1336 Test replacing CRITICAL_SECTION with SRWLOCK.
We use rw locks anyway, and it should be faster and smaller.
2025-09-15 19:40:06 -05:00
2 changed files with 7 additions and 7 deletions

View File

@@ -88,7 +88,7 @@ void *janet_abstract_threaded(const JanetAbstractType *atype, size_t size) {
#ifdef JANET_WINDOWS #ifdef JANET_WINDOWS
size_t janet_os_mutex_size(void) { size_t janet_os_mutex_size(void) {
return sizeof(CRITICAL_SECTION); return sizeof(SRWLOCK);
} }
size_t janet_os_rwlock_size(void) { size_t janet_os_rwlock_size(void) {
@@ -96,20 +96,20 @@ size_t janet_os_rwlock_size(void) {
} }
void janet_os_mutex_init(JanetOSMutex *mutex) { void janet_os_mutex_init(JanetOSMutex *mutex) {
InitializeCriticalSection((CRITICAL_SECTION *) mutex); InitializeSRWLock((PSRWLOCK) mutex);
} }
void janet_os_mutex_deinit(JanetOSMutex *mutex) { void janet_os_mutex_deinit(JanetOSMutex *mutex) {
DeleteCriticalSection((CRITICAL_SECTION *) mutex); /* no op? */
(void) mutex;
} }
void janet_os_mutex_lock(JanetOSMutex *mutex) { void janet_os_mutex_lock(JanetOSMutex *mutex) {
EnterCriticalSection((CRITICAL_SECTION *) mutex); AcquireSRWLockExclusive((PSRWLOCK) mutex);
} }
void janet_os_mutex_unlock(JanetOSMutex *mutex) { void janet_os_mutex_unlock(JanetOSMutex *mutex) {
/* error handling? May want to keep counter */ ReleaseSRWLockExclusive((PSRWLOCK) mutex);
LeaveCriticalSection((CRITICAL_SECTION *) mutex);
} }
void janet_os_rwlock_init(JanetOSRWLock *rwlock) { void janet_os_rwlock_init(JanetOSRWLock *rwlock) {

View File

@@ -83,7 +83,7 @@ struct JanetChannel {
int closed; int closed;
int is_threaded; int is_threaded;
#ifdef JANET_WINDOWS #ifdef JANET_WINDOWS
CRITICAL_SECTION lock; SRWLOCK lock;
#else #else
pthread_mutex_t lock; pthread_mutex_t lock;
#endif #endif