Code erforderlich, die nicht die Auswirkungen auf Sammlung Mutual Exclusion mussMutual Exclusion
List<string> _itemColection = new List<string>();
object _criticalSection = new object();
private void Add(string item)
{
lock (_criticalSection)
{
_itemColection.Add(item);
}
}
private void Remove(string item)
{
lock (_criticalSection)
{
_itemColection.Remove(item);
}
}
private void GetCount()
{
///Is it lock is reuired here?
return _itemColection.Count;
}
//Thread method
private void Run()
{
lock (_criticalSection)
{
foreach (string item in _itemColection)
{
///Some operation
}
}
}
Ist es Mutex in GetCount erforderlich ist() -Methode. Die Sammlungswerte werden nicht geändert
Es sei denn, Sie * wissen *, dass Ihre beteiligten Typen für Ihre Operationen threadsafe sind - z. Zeichenketten oder * nur * Lesen in einem Wörterbuch, das einmal statisch eingerichtet und nie geändert wurde. –
Genau ... das scheint mir offensichtlich. Ich denke, wir verwenden nur Lock-In-Operationen, die einige Informationen ändern müssen. Ich habe vergessen, das auf meiner Antwort zu sagen. – rpf