C: Как вы объявляете рекурсивный мьютекс с потоками POSIX?

я немного запутался в том, как объявить рекурсивный мьютекс с помощью 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

Я стараюсь просто последовательно читать / удалять из очереди.

Дело в том, что нет никакого примера того, как объявлять рекурсивные мьютексы. Или их может быть несколько, но они не компилируются для меня.

45
задан jotik 13 May 2016 в 08:00
поделиться