PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/zmq/utils/mutex.h |
/* * 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 }