Общий XElement как SiteMap
-
06-09-2019 - |
Вопрос
У меня есть собственная CMS, в которой я использую статический XElement в качестве карты сайта.Когда на карте происходят обновления, я синхронизирую потоки записи, но ничего не делаю с читателями, просто позволяя им получить XElement, когда им это нужно.
При тестировании я думал, что если я буду перечислять XElement из потока чтения и обновлять его в другом потоке записи, я получу исключение.Это было не так.Просто интересно, может ли кто-нибудь объяснить мне, видят ли они какие-либо серьезные проблемы с этим подходом.Не похоже, что это должно быть безопасно, но все мои испытания показали, что это так.
Решение
Используйте System.Threading.ReaderWriterLock для управления доступом к XElement.Таким образом, вы синхронизируете всех читателей и всех писателей, не блокируя одновременную активность чтения.