Создать критическую секцию/блокировку для конкретного пользователя

Я разрабатываю веб-сайт электронной коммерции, к которому будут обращаться несколько пользователей. У меня есть метод UpdateUserAmount(), который должен быть синхронизирован для конкретного пользователя, т.е. мы не должны одновременно обращаться к методу UpdateUserAmount() для одного и того же пользователя.

Я думаю об использовании нового статического объекта блокировки для каждого пользователя. Я буду создавать этот объект, когда пользователь входит в критическую секцию, и удалять его, когда он уходит.

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

UpdateUserAmount(int amt) {
    user.amount+=amt // critical section
}

person droidmad    schedule 16.01.2015    source источник


Ответы (1)


Я думаю об использовании нового [...] объекта блокировки для каждого пользователя.

Это именно то, что вам нужно сделать.

person Servy    schedule 16.01.2015