首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

在种B的方法中使用lock操作,lock里面操作的是另一个类里面的静态Dictionary

2012-12-18 
在类B的方法中使用lock操作,lock里面操作的是另一个类里面的静态Dictionary想问一下,这样写,这个lock到底

在类B的方法中使用lock操作,lock里面操作的是另一个类里面的静态Dictionary
想问一下,这样写,这个lock到底有没有起作用呢?会不会出现什么问题?


public class Globle
{
    public class Globle
    {
        public static Dictionary<string, AppSession> sessionDict = new Dictionary<string, AppSession>();

        public static Dictionary<int, List<string>> companyDataDict = new Dictionary<int, List<string>>();
    }
}

public class B
{
        public void RegisterNewSession(AppSession session)
        {
            if (Globle.sessionDict.ContainsKey(session.user.UserID))
                 return;
            lock (obj_1)
            {
                Globle.sessionDict.Add(session.user.UserID, session);
                if (Globle.companyDataDict.Keys.Contains(session.user.CompanyID))
                {
                    Globle.companyDataDict[session.user.CompanyID].Add(session.user.UserID);                    
                }
            }
        }
}

[解决办法]
对于sessionDict,基本没问题,因为不同的线程session.user.UserID应该不一样,既是一户多用,也不会有多少并发,如果非要再严谨一点,可以用双锁
对于companyDataDict就不好说了,还要看你别出的代码
[解决办法]
obj_1是什么东东?

热点排行