Защита нескольких списков с помощью rcu
Привет,
Я новичок в механизм блокировки rcu в ядре Linux.
Пытаясь понять, как работает rcu и предоставляемые API, я вижу, что rcu_read_lock(), rcu_synchronize() не принимает ни одного экземпляра блокировки. Итак, допустим, у меня есть n независимых списков, которые я хочу защитить с помощью RCU, гарантированно ли reads и synchronize () работают так, как они должны быть?
Простите, если вопрос кажется слишком наивным
Заранее спасибо.
1 ответ
Отказ от мьютекса - одно из основных преимуществ использования RCU (чтение, копирование, обновление). каждый rcu_read_lock()
будет гарантировать, что данные, читаемые локально, не изменятся до rcu_read_unlock()
выполнен. synchronize_rcu()
будет блокировать на всех предыдущих читателей для синхронизации структуры данных.