al_create_mutex_recursive man page
al_create_mutex_recursive — Allegro 5 API
#include <allegro5/allegro.h> ALLEGRO_MUTEX *al_create_mutex_recursive(void)
Create the mutex object (a mutual exclusion device), with support for "recursive" locking. That is, the mutex will count the number of times it has been locked by the same thread. If the caller tries to acquire a lock on the mutex when it already holds the lock then the count is incremented. The mutex is only unlocked when the thread releases the lock on the mutex an equal number of times, i.e. the count drops down to zero.