Make locking more uniform
parent
b5d0ac4c42
commit
b4f472c4fa
|
@ -62,6 +62,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
|
||||||
// count. The entries are removed when the interest count reaches 0.
|
// count. The entries are removed when the interest count reaches 0.
|
||||||
Dictionary<UUID,UUID> classifiedCache = new Dictionary<UUID, UUID>();
|
Dictionary<UUID,UUID> classifiedCache = new Dictionary<UUID, UUID>();
|
||||||
Dictionary<UUID,int> classifiedInterest = new Dictionary<UUID, int>();
|
Dictionary<UUID,int> classifiedInterest = new Dictionary<UUID, int>();
|
||||||
|
Object classifiedLock;
|
||||||
|
|
||||||
public Scene Scene
|
public Scene Scene
|
||||||
{
|
{
|
||||||
|
@ -329,10 +330,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
|
||||||
|
|
||||||
if(!classifiedCache.ContainsKey(cid))
|
if(!classifiedCache.ContainsKey(cid))
|
||||||
{
|
{
|
||||||
|
// lock(classifiedLock)
|
||||||
|
// {
|
||||||
|
lock(classifiedCache)
|
||||||
classifiedCache.Add(cid,creatorId);
|
classifiedCache.Add(cid,creatorId);
|
||||||
|
lock(classifiedInterest)
|
||||||
classifiedInterest.Add(cid, 0);
|
classifiedInterest.Add(cid, 0);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lock(classifiedInterest)
|
||||||
classifiedInterest[cid] ++;
|
classifiedInterest[cid] ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,19 +356,17 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles
|
||||||
{
|
{
|
||||||
target = classifiedCache[queryClassifiedID];
|
target = classifiedCache[queryClassifiedID];
|
||||||
|
|
||||||
if(classifiedInterest[queryClassifiedID] -- == 0)
|
lock(classifiedInterest)
|
||||||
{
|
classifiedInterest[queryClassifiedID] --;
|
||||||
lock(classifiedCache)
|
|
||||||
|
if(classifiedInterest[queryClassifiedID] == 0)
|
||||||
{
|
{
|
||||||
lock(classifiedInterest)
|
lock(classifiedInterest)
|
||||||
{
|
|
||||||
classifiedInterest.Remove(queryClassifiedID);
|
classifiedInterest.Remove(queryClassifiedID);
|
||||||
}
|
lock(classifiedCache)
|
||||||
classifiedCache.Remove(queryClassifiedID);
|
classifiedCache.Remove(queryClassifiedID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string serverURI = string.Empty;
|
string serverURI = string.Empty;
|
||||||
bool foreign = GetUserProfileServerURI(target, out serverURI);
|
bool foreign = GetUserProfileServerURI(target, out serverURI);
|
||||||
|
|
Loading…
Reference in New Issue