Files
hmmmm/inc/my_mutex.h
2025-01-21 22:03:23 +03:00

22 lines
572 B
C

#ifndef __MY_MUTEX_H__
#define __MY_MUTEX_H__
#include <pthread.h>
/**
* Макрос для pthread_mutex_t
* Использовать так:
* with_lock(&mtx)
* {
* secured_code();
* }
*/
#define __MY_MUTEX__CONCAT(x, y) x##y
#define __MY_MUTEX__UNIQUE_NAME(base) __MY_MUTEX__CONCAT(base, __LINE__)
#define with_lock(mutex) \
for (int __MY_MUTEX__UNIQUE_NAME(_once) = (pthread_mutex_lock(mutex), 1); \
__MY_MUTEX__UNIQUE_NAME(_once); \
pthread_mutex_unlock(mutex), __MY_MUTEX__UNIQUE_NAME(_once) = 0)
#endif //ifndef __MY_MUTEX_H__