次のコードを取得すると、マルチスレッド環境で何が起こるか:
static Dictionary<string,string> _events = new Dictionary<string,string>();
public static Dictionary<string,string> Events { get { return _events;} }
public static void ResetDictionary()
{
_events = new Dictionary<string,string>();
}
マルチスレッド環境では、このメソッドとプロパティは異なるスレッドから同時にアクセスできます。
別のスレッドでアクセス可能な静的変数に新しいオブジェクトを割り当てることはスレッドセーフですか? 何が問題になる可能性がありますか?
Events が null になる瞬間はありますか?? Events
たとえば、2 つのスレッドが同時に呼び出す場合ResetDictionary()
。