.NET 4.0新增命名空间:System.Collections.Concurrent

集合类的需求总是源源不断,因此,不管是1.0到2.0的泛型,还是3.0到4.0 的并行(本文的并行指Concurrent,非 Parallel),.NET每个版本总会伴随着一些 集合类的增长。由于并行计算现在已经越来越流行,这里我将对.NET 4.0中新增 的命名空间System.Collections.Concurrent和它下面的类做一些简单的介绍。

为什么需要Concurrent?

相信不少朋友都有多线程编程的经历吧,不过在.NET 4.0以前,多线程编程 下很容易出问题,先看个简单的例子吧。

static void main()
{
myList = new List<string>();
for (int i = 0; i < 1000; i++)
{
myList.Add(i.ToString());
}
new Thread(T2).Start();
new Thread(T3).Start();
}
static IList<string> myList;
static void T2()
{
Thread.Sleep(100);
for (int i = 0; i < 50; i++)
{
myList.Remove(i.ToString());
}
}
static void T3()
{
foreach (var a in myList)
{
Console.WriteLine(a);
}
}

在这个例子中,我们首先初始化一个长度为1000数组,然后我们开启两个线 程,一个进行删除操作,另外个则进行简单的读操作。运行代码的话你会发现程 序会抛出InvalidOperationException,因为系统集合在被读的同时被修改了,因 此列举操作可能不能执行。

当然在4.0以前我们也有办法避免这种类似的操作,比如我们可以对要操作的 对象加锁。即我们可以在对myList集合进行读写操作之前对其添加代码lock (myList)。

然而这种方式毕竟不够简洁,并且在更复杂的情况下它可能会显得非常繁琐 。这时候支持并行操作的集合应运而生了。

时间: 2024-10-29 14:04:41

.NET 4.0新增命名空间:System.Collections.Concurrent的相关文章

.net-出错 使用泛型 类型“System.Collections.Generic.IEnumerable&amp;amp;lt;T&amp;amp;gt;”要“1”个类型实参

问题描述 出错 使用泛型 类型"System.Collections.Generic.IEnumerable<T>"要"1"个类型实参 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using

thinkPHP5.0框架命名空间详解

本文实例讲述了thinkPHP5.0框架命名空间.分享给大家供大家参考,具体如下: 命名空间 ThinkPHP采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间的基本概念,可以参考PHP手册:PHP命名空间 特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \,例如: // 错误的用法 $class = new stdClass

Dreamweaver 4.0 新增功能全接触

dreamweaver MacroMedia公司在2000年11月13日发布了Dreamweaver 4.0,它的出现把Dreamweaver的竞争对手远远甩在了后面,稳坐可视化网页编辑软件的头把交椅,作为Dreamweaver 3.0 的升级产品Dreamweaver 4.0并没有质的飞跃,它基本保持了Dreamweaver3.0的界面风格,唯一不同的是多了几个浮动面板,要是不太细心的话还以为是Dreamweaver3.0,Dreamweaver4.0到底有什么新东东?让我来给您详细介绍Dre

Dreamweaver 4.0 新增功能全接触(图)

dreamweaver   MacroMedia公司在2000年11月13日发布了Dreamweaver4.0,它的出现把Dreamweaver的竞争对手远远甩在了后面,稳坐可视化网页编辑软件的头把交椅,作为Dreamweaver3.0的升级产品Dreamweaver4.0并没有质的飞跃,它基本保持了Dreamweaver3.0的界面风格,唯一不同的是多了几个浮动面板,要是不太细心的话还以为是Dreamweaver3.0,Dreamweaver4.0到底有什么新东东?让我来给您详细介绍Dream

HTML 4.0新增特性示例

示例 早在1997年12月W3C联盟就发布了HTML 4.0的最终技术说明书,其中增加和增强了许多功能.但许多网页制作者并不是很了解这些功能,可能是现在网页制作工具越来越高级了,讲究所见即所得,从而牺牲了人工制作网页的技巧和灵活性.其实我们发现,用工具来搭一个网页的整体框架是不错的,但在许多细节的处理上还很死板.因此掌握一些HTML标签的知识,对于优化网页很有益处.下面我们就谈一谈在HTML 4.0中新增的一些属性功能. ACRONYM(简称):表示一个简称缩写.这是一个块元素.示例:<ACRO

“System.Collections.Generic.IEnumerable&lt;TestDAL.HistoryData&gt;”不包含“ToList”的定义

错误 2  "System.Collections.Generic.IEnumerable<TestDAL.HistoryData>"不包含"ToList"的定义,并且找不到可接受类型为"System.Collections.Generic.IEnumerable<TestDAL.HistoryData>"的第一个参数的扩展方法"ToList"(是否缺少 using 指令或程序集引用?) J:\太阳能近

Swift 3.0 新增安全特性的一点普及

本文讲的是Swift 3.0 新增安全特性的一点普及, 在 Swift 发布之后,Swift 的开发者一直在强调,安全性与可选择类型是 Swift 最为重要的特性之一.他们提供了一种nil的表示机制,并要求有一个明确的语法在可能为nil的实例上使用. 可选择类型主要以下两种: Optional ImplicitlyUnwrappedOptional 第一种做法是一种安全的做法:它要求我们去拆解可选类型变量是为了访问基础值.第二种做法是一种不安全的做法:我们可在不拆解可选择类型变量的情况下直接访问

WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能

近日,连尚网络旗下产品WiFi万能钥匙发布了iOS4.0最新版本.根据用户的需求反馈,WiFi万能钥匙iOS4.0新增了骚扰电话拦截等多个功能.版本更新后,WiFi万能钥匙在连接成功率和使用流畅程度上实现了完美跃升,这也是WiFi万能钥匙继iOS3.3.0版本实现"一键免费连接WiFi"后的又一次突破. 在最新的iOS4.0版本中,连接的稳定性.连接速度更进一步提高,用户在使用上能够有明显的连接更为流畅的感受.目前,WiFi万能钥匙的连接成功率接近80%,远高于同行水平.同时,新版本完

探究Vue.js 2.0新增的虚拟DOM_javascript技巧

你可能早就已经听说了 Vue.js 2.0.一个主要的令人兴奋的新特性就是更新页面的"虚拟DOM"的加入. 虚拟 DOM 可以做什么? React 和 Ember 都使用了虚拟DOM来提升页面的刷新速度.为了理解其如何工作,让我们先讨论一下几个概念: 更新DOM的花费时间非常长 当我们使用 JavaScript 来改变页面的时候,浏览器不得不做一些工作来找到需要的DOM节点,并且做出类似这样的改变: document.getElementById('myId').appendChild