想问一下,这样写,这个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是什么东东?