Я использую блокировки чтения/записи в Linux, и я обнаружил, что пытается обновить заблокированный объект чтения до блокировок блокировки записи.
то есть.
// acquire the read lock in thread 1.
pthread_rwlock_rdlock( &lock );
// make a decision to upgrade the lock in threads 1.
pthread_rwlock_wrlock( &lock ); // this deadlocks as already hold read lock.
Я прочитал man-страницу, и это довольно специфично.
Вызывающий поток может блокироваться, если на время, когда вызов сделан, он удерживает блокировка чтения и записи (будь то чтение или блокировка записи).
Каков наилучший способ обновления блокировки чтения блокировки записи в этих обстоятельствах. Я не хочу вводить гонку за переменную, которую я защищаю.
Предположительно, я могу создать еще один мьютекс, чтобы включить освобождение блокировки чтения и получение блокировки записи, но тогда я действительно не вижу использования блокировок чтения/записи. Я мог бы просто использовать обычный мьютекс.
спасибо