コードスペランカー

ゲーム開発日誌など

マルチコア対応のプログラミング

CPUの数を知る」でCPUの数を見てからマルチスレッドプログラムでどうにかしようとか考えていたが、どうやら.NET4.0ではParallelクラスという便利な並列処理クラスが提供されているようだ。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
static void Main(string[] args)
  {
    int count = 1000000;
    int[] arr = new int[count];

    Parallel.For(0, count, i =>
      {
        // 何か処理
        arr[i] = i;
      }
    );
    Console.WriteLine("処理完了");
    Console.ReadLine();
  }
}

こんな感じに書ける。
InvokeしたりForEachしたりもできる。
ただし、同じメモリに書き込む可能性があるときは排他処理をわすれないように。