国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基礎才是重中之重~ConcurrentDictionary讓你的多線程代碼更優美

2019-11-17 02:31:20
字體:
來源:轉載
供稿:網友

基礎才是重中之重~ConcurrentDictionary讓你的多線程代碼更優美

回到目錄

ConcurrentDictionary是.net4.0推出的一套線程安全集合里的其中一個,和它一起被發行的還有ConcurrentStack,ConcurrentQueue等類型,它們的單線程版本(線程不安全的,Queue,Stack,Dictionary)我們一定不會陌生,可以說是經常用到,一個類的實例里,有個屬性是個字典,我們不加考慮的會用Dictionary,而當這個屬性被提升為static靜態的(類級別的)時候,我們就要考慮它的線程安全性了,因為它有可能被多個線程同時訪問,當然,如果這個對象是只讀的,也無所謂線程安全,但如果這個屬性是可以被寫的,那就需要把它加鎖了,這代碼我們經常看到:

lock(obj){_dic[key]=value;}

看吧,你的代碼會有很我的lock塊,不說它是否漂亮,但從性能上看,就不能被接收,我們知道,lock會把其它線程鎖在外面,無論是讀還是寫,都會被鎖,性能非常并,微軟自己也看到了它的不足,所以才推出了System.Collections.Concurrent集合,在這個命名空間里,開發了一批線程安全的對象,當然內核也類似于lock機制,但小微自己一定是做了不少優化的,這是我們能肯定的,呵呵.如果你之前的方法用的都是Dicationary的,那修改也方便,只要利用適配器模式,把它加工一下即可

       PRivate readonly static ConcurrentDictionary<string, T> _dic;       #region IDictionary<string,ResultType> 成員        public void Add(string key, T value)        {            _dic.TryAdd(key, value);        }        public bool ContainsKey(string key)        {            return _dic.ContainsKey(key);        }        public ICollection<string> Keys        {            get { return _dic.Keys; }        }        public bool Remove(string key)        {            T val;            return _dic.TryRemove(key, out val);        }        public bool TryGetValue(string key, out T value)        {            return _dic.TryGetValue(key, out value);        }        public ICollection<T> Values        {            get { return _dic.Values; }        }        public T this[string key]        {            get            {                return _dic[key];            }            set            {                _dic[key] = value;            }        }        #endregion

怎么樣,沒有lock塊的代碼漂亮了許多吧!

回到目錄


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴堡县| 普兰店市| 宁乡县| 湟源县| 小金县| 兴安县| 通许县| 阜新市| 满城县| 中西区| 西华县| 江华| 德清县| 花垣县| 浪卡子县| 兴海县| 英超| 库伦旗| 阳信县| 上高县| 应用必备| 长武县| 汾阳市| 邹城市| 四子王旗| 沙坪坝区| 额尔古纳市| 开化县| 东宁县| 象山县| 丰城市| 乐清市| 达日县| 界首市| 延津县| 湛江市| 郴州市| 三穗县| 庄浪县| 内丘县| 买车|