C# / ASP.NET - блокировка веб-приложений

Я работаю над веб-приложением C# / ASP.NET, и у меня есть ряд ситуаций, когда мне нужно выполнить блокировку. В идеале я хочу, чтобы замки действовали независимо, так как они не имеют ничего общего друг с другом. Я рассматривал [MethodImpl(MethodImplOptions.Synchronized)] и несколько способов использования lock(), но у меня есть несколько вопросов / опасений.

Похоже, что MethodImplOptions.Synchronizedwill essentially dolock (this) `. В этом случае кажется, что поток, входящий в любой синхронизированный метод, блокирует потоки все остальные от входа в синхронизированный метод Любые. Это правильно? Если да, то это недостаточно детально. В этот момент мне кажется, что я могу использовать Application.Lock. (Но, пожалуйста, поправьте меня, если я ошибаюсь.)

Что касается lock(), я пытаюсь понять, что мне следует передать. Должен ли я создать набор объектов исключительно для этой цели и использовать каждый для другой блокировки? Есть ли способ лучше?

Заранее спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
5 947
4

Ответы 4

Вы можете предоставить некоторую статическую ссылку или синглтон и lock () это.

Может быть, вы объясните, зачем вам такая блокировка и для чего вы ее будете использовать?

Существует ряд переменных приложения и коллекций / списков, которые читаются и изменяются запросами. Каждый запрос "заботится" только об определенном подмножестве этих переменных. Я пытаюсь максимизировать пропускную способность, поэтому чем более детально я смогу сделать блокировки, тем лучше.

Matthew Cole 24.09.2008 09:59

Хорошо, но тогда применение блокировок / синхронизации на уровне метода мне вообще не кажется детализированным, поэтому я спросил ...

cruizer 24.09.2008 11:17

Сами методы содержат только те наборы, которые мне нужно заблокировать - не более того.

Matthew Cole 24.09.2008 15:18

Создание экземпляров дискретных объектов на статическом уровне / уровне приложения - лучший способ простой монопольной блокировки.

Следует также учитывать, могут ли экземпляры блокировки чтения / записи на уровне приложения также помочь улучшить параллелизм вашего приложения, например. для чтения и обновления списков, хэшей и т. д.

Я предпочитаю создать объект специально для замка.

private object lockForSomeResource = new object();

в классе, который управляет спорным ресурсом. Джефф Рихтер опубликовал сообщение статья, которое я читал некоторое время назад, в котором рекомендовалось это.

Вам нужно тщательно продумать создание их в виде иерархии, если в блокировке есть какой-либо код, которому требуется другая блокировка. Убедитесь, что вы всегда запрашиваете их в одном и том же порядке.

Я разместил аналогичный вопрос на этом форуме, он может вам помочь. Ниже ссылка

Проблема с записью в отдельный файл в веб-службе в .NET

Это выглядит многообещающе. Я попробую.

Matthew Cole 24.09.2008 15:18

Другие вопросы по теме