Сабж. Есть C99 (совместимость с компиляторами кроме gcc и clang не нужна, совместимость с libc кроме glibc — тоже); есть самописные мьютексы (mutex_t
, mutex_lock(mutex_t *)
, mutex_unlock(mutex_t *)
).
Хочется сделать автоматическое освобождение захваченного мьютекса при выходе из захватившей его функции (типа std::lock_guard в плюсах). Очевидное решение — локальная переменная с адресом мьютекса и __attribute__((cleanup(...)))
, но хочется сделать красивее, без лишних локальных переменных: ведь адрес мьютекса известен ещё на этапе компиляции.
Возможно?