Initial commit
This commit is contained in:
22
inc/my_mutex.h
Normal file
22
inc/my_mutex.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#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__
|
||||
Reference in New Issue
Block a user