SpinWait的性能高于Thread.Sleep

在进行多线程开发时,我们经常会用到Thread.Sleep(timeout_ms)来等待或者腾出时间来让其他线程处理。不过,即使我们把timeout_ms设置为0,Thread.Sleep还是会执行等待操作。这就让人很纳闷了,我明明指定的等待时间是0毫秒,为什么还会执行等待呢? 这时因为当我们调用...

2013-11-27 13:03:50

阅读数 19117

评论数 5

用线程安全随机数解决Random在多线程中随机性重复的问题

在.NET中,随机数一般是用Random来获取,但是当在多任务的并行化编程时,问题就出现了。因为Random是基于时间作为种子来生成伪随机数的,而如果程序在多核并行时,在同一时间内的多个核中取到的时间是一样的,这样一来,生成的伪随机数就有可能会有一样的。如果业务需求中需要不可重复的随机数,那么这后...

2013-11-27 10:36:54

阅读数 7783

评论数 0

VS2012并发可视化工具启动异常(当前正在进行ETW收集)

在调出VS2012的并发可视化时,弹出异常"Concurrentcy Visualizer无法启动,因为当前正在进行ETW收集",如下图 后来查找资料,查了很久,终于在《收集 Windows 事件跟踪 (ETW) 数据》一文中找到线索。 按照文中的说法,需要在性能管理器中右...

2013-11-26 16:26:28

阅读数 2312

评论数 0

用TaskScheduler代替invoke和begininvoke异步更新那界面数据

在异步编程时,为了更新界面的数据,经常会用invoke和begininvoke来操作。而这两个方法又必须是基于控件的,所以为了能够调用还必须传一个控件进去。而在基于任务编程时,可以使用TaskScheduler来直接更新数据。下面是代码 using System; using System.Col...

2013-11-26 10:25:44

阅读数 1602

评论数 0

超线程将物理内核提升至更多的逻辑内核

现在电脑大多数是多核的,比如我的电脑是宏基的,下面是驱动精灵硬件检测的结果。 我们可以看到,硬件概要中显示CPU是双核的,现在我们再看看CPU(处理器)的具体信息。同样是使用驱动精灵检测结果。 这时我们会看到,核心/线程部分显示的是双核、四线程。那么这里的四线程又是什么意思呢?我们再看看任...

2013-11-23 09:13:06

阅读数 2869

评论数 0

并行化时要注意的线程安全与任务安全

在串行编程时,操作都是按顺序执行的,比如数字从1到100000递增,就必然的是1、2、3、4……100000。代码如下 for (int i = 1; i <= 100000; i++) { Console.WriteLine(i); ...

2013-11-22 15:20:57

阅读数 1764

评论数 0

.NET4.0的并行调试窗(Parallel Tasks)如何调出

.NET4.0增加了并行处理功能,在进行并行调试时,需要调出并行调试窗进行跟踪查看,可是按照>一书中说的Debug-Windows->Parallel Tasks,根本没有找到并行调试窗,如下图。 这是为什么呢?看着>一书中明明是可以调用的,思考了一会儿之后,想着会不会...

2013-11-20 10:35:31

阅读数 1947

评论数 0

dynamic和匿名对象

有时需要使用匿名对象存储数据,而有时需要使用dynamic去提取数据,这里写了一个简单的示例,代码如下 static void Main(string[] args) { List datas = new List(); for (...

2013-11-18 17:57:42

阅读数 2189

评论数 0

Environment.CurrentDirectory引起的BUG

今天在运行一个项目时,提示“配置文件不存在”,经查是源于一个配置文件的路径不正确。可是程序在本地运行OK的,为什么在客户电脑上运行就不OK了? 想来想去只能是Environment.CurrentDirectory这个取路径的方式不对,然后换成了Application.StartupPath程序...

2013-11-12 18:17:52

阅读数 2289

评论数 1

一个失误引发的奇怪线程BUG

今天客户反应之前做的一个项目中,有一个功能时能时不能,于是按照描述,在自己电脑上进行了相应的测试,可是发现问题难以重现。后来按着客户的环境开了个虚拟机(XP SP3)进行配置,问题重现了。 可是在自己电脑上(WIN7 64)却不会出现。难道是系统引发的问题?可是依据项目以前的案例,在XP上运行是...

2013-11-04 17:53:42

阅读数 859

评论数 0

64位引用32位导致“未能加载文件或程序集或它的某一个依赖项”的异常

今天在合并项目时,出现了总是提示“未能加载文件或程序集或它的某一个依赖项”的异常,反复检查了几遍所引用的程序集,并没有哪个依赖项没有加载,而且看生成的文件, 程序集也已经生成了,但是一调用的时候就异常。 网上搜了很多资料,基本上都说是引用的问题,可是试了之后根本解决不了问题。 后来,忽然想到...

2013-11-04 11:43:37

阅读数 2307

评论数 0

提示
确定要删除当前文章?
取消 删除