#ifndef __MY_MUTEX_H__ #define __MY_MUTEX_H__ #include /** * Макрос для 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__