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%,造成假死。。那到底用不用並行呢。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM