zoukankan      html  css  js  c++  java
  • 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();
    

    查看IL代码,i++需要 三条指令
    ldloc.0
    ldc.i4.1
    add

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

  • 相关阅读:
    git
    avalonJS
    push
    DataTables使用学习记录
    django models使用学习记录
    js操作记录
    部署网站遇到的问题
    ubuntu修改文件权限记录
    django发送邮件
    ubuntu使用记录
  • 原文地址:https://www.cnblogs.com/zifeiniu/p/8623651.html
Copyright © 2011-2022 走看看