代码之家  ›  专栏  ›  技术社区  ›  Gsquare

这个字典操作是线程安全的吗?

  •  1
  • Gsquare  · 技术社区  · 7 年前

    我知道常规的字典读/写操作不是线程安全的。这个案子怎么样?

    class Data{ public int data{get; set;}}
    

    和

    var dict = new Dictionary<int, Data>();
    

    这是线程安全的吗?

    await Task.WhenAll(dict
    .Select(async t => 
        t.Value.data = t.Value.data+1;
        await somefunc(t.Value.data);
    );
    

    有没有更好的方法不使用ConcurrentDictionary重写此操作,因为只有一个实例需要支持此行为。

    0 回复  |  直到 7 年前