Должны ли объекты в памяти, ограниченные областью пользователя / сеанса, быть поточно-ориентированными? - PullRequest
1 голос
/ 30 августа 2010
// Not thread-safe
class ShoppingCart {
    private List<Product> products;

    public void Add(Product p) { products.Add(p); }
    public void Remove(Product p) { products.Remove(p); }
}

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

// Could be a HTTP GET or AJAX pull
Add(Product product) {
    ShoppingCart cart = Session[User.ID];
    cart.Add(product);
}

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

1 Ответ

0 голосов
/ 30 августа 2010

Вопрос не должен быть , поскольку объекты в памяти, ограниченные областью пользователя / сеанса, должны быть поточно-безопасными , но я должен иметь несколько потоков, читающих и пишущих в один и тот же экземпляр общей памяти(независимо от того, откуда он взялся) ?

Так что, если вы никогда не запускаете вручную несколько потоков для обработки этого Session[User.ID], вам не нужно синхронизировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...