У меня есть ASP.net (c #) приложение, в котором есть часть кода, которая изменяет глобально доступный ресурс (например, файл web.config).Естественно, при изменении ресурса, чтобы предотвратить состояние гонки, разрешается использовать только одного пользователя за раз, поэтому мне нужно заблокировать код с помощью монитора:
lock (Global.globallyAccessibleStaticObject) {//..modify resource //..сохранить ресурс}
Я был удовлетворен этим подходом к блокировке, но потом подумал, а что, если этого недостаточно?я должен использовать мьютекс вместо этого?Я знаю, что мьютекс полезен для межпроцессной блокировки (во многих процессах и приложениях) и, следовательно, медленнее, но, учитывая характер развернутой страницы asp.net (несколько запросов одновременно в нескольких доменах приложений), это необходимо?
Ответ, похоже, будет зависеть от того, как обрабатываются ASP-страницы на стороне сервера.Я провел исследование, касающееся http-конвейера, домена приложения, пула потоков и т. Д., Но я все еще не понимаю, нужно ли запрашивать межпроцессную блокировку для моей синхронизации или достаточно внутрипроцессной блокировки для веб-приложения ???
Примечание : я не хочу увлекаться конкретной задачей, потому что хочу, чтобы этот вопрос оставался общим, поскольку он может быть актуален во многих (многопоточных) сценариях.Кроме того, я знаю, что есть больше способов выполнить эти задачи (асинхронные обработчики / страницы, веб-службы и т. Д.), Которые меня сейчас не волнуют.