C# CncurrentDictionary

ConcurrentDictionary GetOrAdd方法不是线程安全的
两个add方法委托都执行了。
最后有可能是Hello from t1 或者Hello from t2。

            Thread t1 = new Thread(() =>
            {
                store.GetOrAdd(0, i =>
                {
                    string msg = "Hello from t1";
                    Trace.WriteLine(msg);
                    Thread.SpinWait(10000);
                    return msg;
                });
            });

            Thread t2 = new Thread(() =>
            {
                store.GetOrAdd(0, i =>
                {
                    string msg = "Hello from t2";
                    Trace.WriteLine(msg);
                    Thread.SpinWait(10000);
                    return msg;
                });
            });

            t1.Start();
            t2.Start();
            t1.Join();
            t2.Join();
            foreach (var item in store.Values)
            {
                Console.WriteLine(item);
            }
            Console.Read();

ConcurrentDictionary Pitfall - Are delegates factories from GetOrAdd and AddOrUpdate synchronized?
Extension methods to make ConcurrentDictionary GetOrAdd and AddOrUpdate thread safe when using valueFactory delegates

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在毕业以后,除了家乡,呆的最多的城市是上海,其次是苏州。对这两个城市的生活有了些感悟和比较。 简单的说,在两个城市...
    bluescorpio阅读 2,490评论 0 1
  • 听说,认真的人很美,多美,妙不可言。 你说,你不是真不可以,只是,怂了一点。 90后的我们,活着活着就成了别人...
    舍予心阅读 3,935评论 2 2
  • 文/笔迹 总有一个记忆让你觉得温暖,即使时间再久也念念不忘。 我的家乡在广西三里镇,儿时,爸妈会在圩日子的时候去到...
    笔迹故事阅读 3,555评论 0 2
  • 26岁,你看着身边的人都结了婚 婚礼的份子钱逐年递增 春节回家,父母从带你串亲戚 变成了带你去见相亲对象 见了十几...
    北漂成长日记阅读 2,425评论 0 0