У меня есть словарь, который распределяется между несколькими потоками. Каждый поток читает определенное значение из словаря в соответствии с заданным ключом, но - если ключ не существует в словаре, поток должен добавить его в словарь.
Чтобы решить проблему с синхронизацией, я использую класс ReaderWriterLockSlim, который в основном дает мне синхронизацию блокировки чтения-записи (то есть чтения могут выполняться параллельно, но только по одной записи одновременно), но добавляет опцию обновления для читателя. Используя опцию обновления, я могу проверить, есть ли данный ключ в словаре, а если нет - обновить блокировку и записать ее, обещая только одно дополнение для каждого ключа.
Моя проблема в том, что я не могу создать две обновляемые блокировки одновременно, что означает, что это решение бесполезно ...: (
Может кто-нибудь объяснить мне, почему Microsoft решила внедрить обновляемую блокировку таким образом (что я не могу иметь более одной обновляемой блокировки одновременно ...), и дать мне любую идею, как я могу реализовать обновляемую блокировку с помощью сам \ дать мне еще одну идею для синхронизации моего общего словаря?