Сравнить с http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c214.html. Старый документ ранее, когда существовали мьютексы, но данные мьютексы - это блокировка сна, они учитывают контекст пользователя.
спинлок - spinlock_bh - мьютекс - семафор
Если ваши структуры данных только когда-либо доступ к функциям, выполнение инициируется пользовательским приложением, все блокировки примитивы доступны. Это зависит от того, насколько коротким является «короткий доступ».
И тогда есть RCU как пятый способ делать что-то, хотя это несколько не фиксирующий примитив в своем собственном праве. (Используется вместе с одним из замковых примитивов.)