The GRecMutex struct is an opaque data structure to represent a recursive mutex.
It is similar to a Mutex with the difference that it is possible to lock a GRecMutex multiple times in the same thread without deadlock. When doing so, care has to be taken to unlock the recursive mutex as often as it has been locked.
If a RecMutex is allocated in static storage then it can be used without initialisation. Otherwise, you
should call RecMutex on it and g_rec_mutex_clear
when done.
A GRecMutex should only be accessed with the g_rec_mutex_ functions.