2025-05-26 00:44:39 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
|
|
|
|
|
#include <pthread.h>
|
|
|
|
|
|
2025-06-06 19:10:19 -05:00
|
|
|
#ifndef PTHREAD_MUTEX_ADAPTIVE_NP
|
|
|
|
|
# define PTHREAD_MUTEX_ADAPTIVE_NP PTHREAD_MUTEX_NORMAL
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-05-26 00:44:39 -05:00
|
|
|
|
|
|
|
|
static
|
|
|
|
|
inline
|
|
|
|
|
void
|
|
|
|
|
mutex_init(pthread_mutex_t *mutex_)
|
|
|
|
|
{
|
|
|
|
|
int rv;
|
|
|
|
|
pthread_mutexattr_t attr;
|
|
|
|
|
|
|
|
|
|
pthread_mutexattr_init(&attr);
|
|
|
|
|
pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ADAPTIVE_NP);
|
|
|
|
|
|
|
|
|
|
rv = pthread_mutex_init(mutex_,&attr);
|
|
|
|
|
if(rv != 0)
|
|
|
|
|
abort();
|
|
|
|
|
|
|
|
|
|
pthread_mutexattr_destroy(&attr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static
|
|
|
|
|
inline
|
|
|
|
|
void
|
|
|
|
|
mutex_lock(pthread_mutex_t *mutex_)
|
|
|
|
|
{
|
|
|
|
|
int rv;
|
|
|
|
|
|
|
|
|
|
rv = pthread_mutex_lock(mutex_);
|
|
|
|
|
if(rv != 0)
|
|
|
|
|
abort();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static
|
|
|
|
|
inline
|
|
|
|
|
void
|
|
|
|
|
mutex_unlock(pthread_mutex_t *mutex_)
|
|
|
|
|
{
|
|
|
|
|
int rv;
|
|
|
|
|
|
|
|
|
|
rv = pthread_mutex_unlock(mutex_);
|
|
|
|
|
if(rv != 0)
|
|
|
|
|
abort();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static
|
|
|
|
|
inline
|
|
|
|
|
void
|
|
|
|
|
mutex_destroy(pthread_mutex_t *mutex_)
|
|
|
|
|
{
|
|
|
|
|
int rv;
|
|
|
|
|
|
|
|
|
|
rv = pthread_mutex_destroy(mutex_);
|
|
|
|
|
if(rv != 0)
|
|
|
|
|
abort();
|
|
|
|
|
}
|