Вопрос

У меня есть собственная CMS, в которой я использую статический XElement в качестве карты сайта.Когда на карте происходят обновления, я синхронизирую потоки записи, но ничего не делаю с читателями, просто позволяя им получить XElement, когда им это нужно.

При тестировании я думал, что если я буду перечислять XElement из потока чтения и обновлять его в другом потоке записи, я получу исключение.Это было не так.Просто интересно, может ли кто-нибудь объяснить мне, видят ли они какие-либо серьезные проблемы с этим подходом.Не похоже, что это должно быть безопасно, но все мои испытания показали, что это так.

Это было полезно?

Решение

Используйте System.Threading.ReaderWriterLock для управления доступом к XElement.Таким образом, вы синхронизируете всех читателей и всех писателей, не блокируя одновременную активность чтения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top