* Consistently lock part.TaskInventory as pointed out in http://opensimulator.org/mantis/view.php?id=3159

* Not locking causes enumeration exceptions as described in this matis
* part.TaskInventory needs to be locked for every access as it's a dictionary
* Extra locking will hopefully not cause any major issues - in places where the enumeration of the dictionary performs other lock or long running operations, the dictionary is 
cloned instead
This commit is contained in:
Justin Clarke Casey
2009-02-20 14:04:29 +00:00
parent c28b2f799a
commit 01f70de2ea
7 changed files with 417 additions and 204 deletions

View File

@@ -36,9 +36,9 @@ namespace OpenSim.Framework
{
/// <summary>
/// A dictionary for task inventory.
///
/// This class is not thread safe. Callers must synchronize on Dictionary methods.
/// </summary>
/// This class is not thread safe. Callers must synchronize on Dictionary methods or Clone() this object before
/// iterating over it.
public class TaskInventoryDictionary : Dictionary<UUID, TaskInventoryItem>,
ICloneable, IXmlSerializable
{