Мне известно, как работают семафоры. Мы можем держать rwsemaphore для записи общей структуры данных, используя down_write и down_write_trylock, и освободить семафор, используя up_write. Почему нам нужно использовать downgrade_write ()? В чем разница между down_write () и downgrade_write ()?