Uploaded Test files
This commit is contained in:
parent
f584ad9d97
commit
2e81cb7d99
16627 changed files with 2065359 additions and 102444 deletions
82
venv/Lib/site-packages/zmq/utils/mutex.h
Normal file
82
venv/Lib/site-packages/zmq/utils/mutex.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* simplified from mutex.c from Foundation Library, in the Public Domain
|
||||
* https://github.com/rampantpixels/foundation_lib/blob/master/foundation/mutex.c
|
||||
*
|
||||
* This file is Copyright (C) PyZMQ Developers
|
||||
* Distributed under the terms of the Modified BSD License.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(_WIN32)
|
||||
# include <windows.h>
|
||||
#else
|
||||
# include <pthread.h>
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
#if defined(_WIN32)
|
||||
CRITICAL_SECTION csection;
|
||||
#else
|
||||
pthread_mutex_t mutex;
|
||||
#endif
|
||||
} mutex_t;
|
||||
|
||||
|
||||
static void
|
||||
_mutex_initialize(mutex_t* mutex) {
|
||||
#if defined(_WIN32)
|
||||
InitializeCriticalSectionAndSpinCount(&mutex->csection, 4000);
|
||||
#else
|
||||
pthread_mutexattr_t attr;
|
||||
pthread_mutexattr_init(&attr);
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||
pthread_mutex_init(&mutex->mutex, &attr);
|
||||
pthread_mutexattr_destroy(&attr);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
_mutex_finalize(mutex_t* mutex) {
|
||||
#if defined(_WIN32)
|
||||
DeleteCriticalSection(&mutex->csection);
|
||||
#else
|
||||
pthread_mutex_destroy(&mutex->mutex);
|
||||
#endif
|
||||
}
|
||||
|
||||
mutex_t*
|
||||
mutex_allocate(void) {
|
||||
mutex_t* mutex = (mutex_t*)malloc(sizeof(mutex_t));
|
||||
_mutex_initialize(mutex);
|
||||
return mutex;
|
||||
}
|
||||
|
||||
void
|
||||
mutex_deallocate(mutex_t* mutex) {
|
||||
if (!mutex)
|
||||
return;
|
||||
_mutex_finalize(mutex);
|
||||
free(mutex);
|
||||
}
|
||||
|
||||
int
|
||||
mutex_lock(mutex_t* mutex) {
|
||||
#if defined(_WIN32)
|
||||
EnterCriticalSection(&mutex->csection);
|
||||
return 0;
|
||||
#else
|
||||
return pthread_mutex_lock(&mutex->mutex);
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
mutex_unlock(mutex_t* mutex) {
|
||||
#if defined(_WIN32)
|
||||
LeaveCriticalSection(&mutex->csection);
|
||||
return 0;
|
||||
#else
|
||||
return pthread_mutex_unlock(&mutex->mutex);
|
||||
#endif
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue