я немного запутался в том, как объявить рекурсивный мьютекс с помощью pthread. Я пытаюсь сделать так, чтобы только один поток мог одновременно запускать фрагмент кода (включая функции), но после скептицизма я понял, что использование мьютексов не будет работать и что вместо этого я должен использовать рекурсивные мьютексы. Вот мой код:
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
Я стараюсь просто последовательно читать / удалять из очереди.
Дело в том, что нет никакого примера того, как объявлять рекурсивные мьютексы. Или их может быть несколько, но они не компилируются для меня.