限于用户/会话范围的内存中对象是否需要是线程安全的?

时间:2010-08-30 02:10:07

标签: c# asp.net-mvc thread-safety deadlock

// 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 :(得分:0)

问题不应该是内存对象仅限于用户/会话范围需要是线程安全的我有多个线程读取和写入同一共享内存实例(无论它来自哪里)

因此,如果您从未手动运行某些线程来对此Session[User.ID]进行处理,则无需同步它。