ディクショナリ用の次の簡単なゲッタとセッタには、スレッドセーフティメカニズムが必要ですか?この場合、スレッドの安全性が懸念されますか?
必要な場合は、ロックとConcurrentDictionaryの両方の例を指定してください。
public virtual void Add(IFoo foo)
{
dictionary.Add(foo.name, foo);
}
public virtual IFoo Get(string name)
{
if (!dictionary.TryGetValue(name, out IFoo foo)) return null;
return foo;
}
public virtual bool Has(string name)
{
return dictionary.TryGetValue(name, out IFoo foo);
}
public virtual IFoo Remove(string name)
{
if (dictionary.TryGetValue(name, out IFoo foo))
{
dictionary.Remove(name);
}
return foo;
}
protected readonly IDictionary<string, IFoo> dictionary = new Dictionary<string, IFoo>();
なぜあなたはロックやConcurrentDictionaryを使用して独自の例を記述することはできません。
そしてここでは、ConcurrentDictionaryとバージョンです。このウェブサイトはコード作成サービスではありません。あなた自身の努力を示す必要があり、間違いを示すことができます。 –
私の最初の質問は、本当に上記の場合にスレッドの安全性が必要ですか?いくつかのガイドラインで私に助言してください。 – user2727195
このコードはどのように使われていますか?使用した実際のマルチスレッドコードを表示してください。 – fofik