C: ¿Cómo declaras un mutex recursivo con hilos POSIX?

Estoy un poco confundido sobre cómo declarar un mutex recursivo usando pthread. Lo que intento hacer es hacer que solo un hilo a la vez pueda ejecutar un fragmento de código (incluidas las funciones), pero después del escepticismo descubrí que el uso de mutexes no funcionaría y que en su lugar debería usar mutexes recursivos. Aquí está mi código:

pthread_mutex_lock(&mutex);                   // LOCK

item = queue_peek(queue);                     // get last item in queue
item_buff=item;                               // save item to a buffer
queue_removelast(queue);                      // remove last item from queue

pthread_mutex_unlock(&mutex);                 // UNLOCK

Así que lo que intento hacer es simplemente leer / eliminar de la cola en serie.

El caso es que no hay ningún ejemplo sobre cómo declarar mutex recursivos. O tal vez haya algunos, pero no me compilan.

Respuestas a la pregunta(4)

Su respuesta a la pregunta