У меня проблема относительно поведения функции pthread pthread_rwlock_wrlock . В приведенной выше спецификации указано, что когда один поток заблокировал блокировку для записи, а тот же поток снова блокирует ее, это приводит к неопределенному поведению (я действительно мог наблюдать это в том, что в x86 Linux эта функция вызывается noop, а в PowerPC Linux она останавливает поток).
Мне нужна блокировка чтения-записи, имеющая следующие характеристики:
С помощью pthread_mutex_t
рекурсивность блокировки можно контролировать через флаг инициализации, но это невозможно для pthread_rwlock_t
.
Какие у меня варианты? На самом деле мне никогда не приходилось реализовывать такой примитив параллелизма в C, и я думаю, что здесь не хватает очевидного решения.