我怎么感觉 ConcurrentDictionary<,> 不是线程安全的喃?
直接上代码
class Program
{
static readonly ConcurrentDictionary<string, Person> Dic = new ConcurrentDictionary<string, Person>();
static void Main(string[] args)
{
for (int i = ; i < ; i++)
{
Task.Run(() => { GetPerson("wjire"); });
}
Console.ReadKey();
}
private static Person GetPerson(string key)
{
return Dic.GetOrAdd(key, k => new Person());
}
} class Person
{
public Person()
{
Console.WriteLine("new Person()");
}
}
输出:
WHAT FUCK!
哪位大佬能出来解释下么?有点懵逼啊!
难道有些方法是线程安全的,有些方法不是?
想了下,好像也不能说不是线程安全,我感觉虽然创建了4个对象,但是后面3次创建时,key 还不存在,当委托执行完毕,也就是对象创建完成,准备添加的时候,
发现 key 已经存在了,于是终止了添加操作,而是把已经存在的值取出来返给调用者.
感觉应该是这样.
我怎么感觉 ConcurrentDictionary<,> 不是线程安全的喃?的更多相关文章
- Throughput Controller(吞吐量控制器) 感觉就像个线程控制器来的
Percent Executions 下的 Throghput 意思是跑总线程的百分之多少. 如 10线程循环一次, Throghput 设置为80,则有8个线程会跑这个请求 Total Execu ...
- C#字典 Dictionary<Tkey,Tvalue> 之线程安全问题 ConcurrentDictionary<Tkey,Tvalue> 多线程字典
ConcurrentDictionary<Tkey,Tvalue> Model #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutra ...
- Android线程处理之Handler
上一篇已经简单为大家介绍了一下关于Handler的使用,本篇我们就一起再来探讨一下Handler的高级使用,上一篇我们仅仅是简单的进行UI界面的更新,本篇我们来一起探讨一下如何把子线程的数据发送到主线 ...
- 【转】Linux系统进程的知识总结,进程与线程之间的纠葛
我们先打个比方,多线程是十字路口多线程是平面交通系统,造价低,但是红绿灯多,老堵车,而多进程是则是立交桥,虽然造价高,上下坡多耗油,但是不堵车.这是一个抽象的概念.相信大家看完会有这种感觉. 进程和线 ...
- Java编程的逻辑 (65) - 线程的基本概念
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- CLR via C# 读书笔记-26.线程基础
前言 这俩个月没怎么写文章做记录分享,一直在忙项目上线的事情,但是学习这件事情,停下来就感觉难受,clr线程这章也是反复看了好多遍,书读百遍其义自见,今天我们来聊下线程基础 1.进程是什么,以及线程起 ...
- 关于线程安全Dictionary
使用Dictionary时, 是线程不安全的(). 会出现以下的问题, 导致IIS挂掉: 其实DicMapper是不为NUL的, DicMapper["aaasdfasdfasdfzxc ...
- 深入理解java线程池—ThreadPoolExecutor
几句闲扯:首先,我想说java的线程池真的是很绕,以前一直都感觉新建几个线程一直不退出到底是怎么实现的,也就有了后来学习ThreadPoolExecutor源码.学习源码的过程中,最恶心的其实就是几种 ...
- LINUX操作系统知识:进程与线程详解
当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我们大家常用的单CPU ...
随机推荐
- H3C 配置二层ACL
- 定位问题 vue+element-ui+easyui(兼容性)
项目背景:靠近浏览器窗口的各个方向(左上.下.左.右)都有不同的模态框悬浮于窗口,这里针对于底部组件定位的选择(主要针对pc端垂直方向上的定位) 1.百分比:easyui的window窗口定位方式:设 ...
- H3C DHCP中继基本配置
- windows环境下pgsql的安装与使用
- koa2+koa-art-template利用日期管道实现在jat模板中将时间戳转为日期时间
var sp = require("silly-datetime"); var render = require("koa-art-template"); va ...
- CodeForces - 1162E Thanos Nim (博弈论)
Alice and Bob are playing a game with nn piles of stones. It is guaranteed that nn is an even number ...
- [Linux] 使用awk比较两个文件的内容
当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉 , 可以使用这个awk的用法来 awk '{if(ARGIND==1) {val[$0]}else{if($0 ...
- C# 发送电子邮件(smtp)
相关享目托管在github: https://github.com/devgis/CSharpCodes
- Qt StyleSheet皮肤css源码(黑色,超详细) 乌合之众 good
使用方式如下 //设置皮肤样式 static void SetStyle(const QString &styleName) { QFile file(QString(":/imag ...
- Android SDK目录具体结构及Android源码的具体结构
Android SDK目录具体结构 1. add-ons:这里面保存着附加库,比如Google Maps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面. 2. docs:这里面是And ...