线程安全的静态属性

时间:2014-06-04 07:12:47

标签: static thread-safety

我们的生产服务器上也遇到了很高的CPU峰值。

经过研究,我发现我们的解决方案中有一些静态词典。

其中一个看起来像这样:

    public static Dictionary<string, List<ID>> OrderNrLookupTable
    {
        get
        {
            const string cacheKey = "ProductRepository_OrderNrHashTable1";
            var results = CacheManager.GetFromCache<Dictionary<string, List<ID>>>(cacheKey);
            if (results == null)
            {
                results = new Dictionary<string, List<ID>>();
                foreach (var orderNrItem in GetAllOrderNrs())
                {
                    var product = orderNrItem.InnerItem.Parent;
                    if (product != null && product.IsProduct())
                    {
                        if (!results.ContainsKey(orderNrItem.OrderNumber))
                        {
                            results.Add(orderNrItem.OrderNumber, new List<ID> {product.ID});
                        }
                        else
                        {
                            results[orderNrItem.OrderNumber].Add(product.ID);
                        }

                    }
                }
                CacheManager.SaveToCache(results, cacheKey);
            }
            return results;
        }
    }

我的问题是;这个线程安全吗?这会导致生产服务器上的高CPU峰值吗?

更新 线程没有修改字典。

0 个答案:

没有答案