C# Int 类型线程不安全

之前统计报表算法做了一个优化,一个查询二十分钟导致客户端超时,优化到只需要5秒钟。后来发现for循环里数据合并的时候耗时,就用并行做优化。但是发现并行后丢居然数据(当然是因为List线程不安全)。

前几天写了一个demo如下,发现如果MAX很大时,count小于MAX,Int 居然是线程不安全的,即便是Int++;

        int count = 0;
int MAX = 1000000;
System.Threading.Tasks.Parallel.For(0, MAX, (i) =>
{
count++;
});
Console.WriteLine(count);
Console.Read();

C#  Int 类型线程不安全

C#  Int 类型线程不安全

C#  Int 类型线程不安全

查看IL代码,i++需要 三条指令

ldloc.0

ldc.i4.1

add

有一个问题,如果不用并行,那么4核服务器只占用一个核,如果使用并行四核全上,那么会造成服务器CPU占用100%,造成假死。。那到底用不用并行呢。。

上一篇:android:layout_gravity 和 android:gravity 的区别


下一篇:hibernate系列笔记(2)---Hibernate的核心API