お問い合わせ

tel:0570-046-503

営業時間 10:00~17:00(定休日:土日祝日)

Foreachを並列で処理する

   2015/08/04

Taskクラスを用いた並列処理は以前の記事でご紹介しましたが、

.NetFramework 4.0では、for文、foreach文の並列処理が追加されました。


既存のfor文、foreach文を書き換えるだけで、簡単に並列処理を実装できます。

ただし、複数のスレッドから同じデータを読み書きする場合には排他制御が必要なので注意してください。


まずは、旧来の書き方です。

        var listDt = new DataTable();
        var dic = GetFields(tableName);
        foreach (DataRow dr in listDt.Rows)
        {
            ReplaceItem(dr, tableName, dic);
        }

Parallel句を用いるとこうなります。

        var listDt = new DataTable();
        var dic = GetFields(tableName);
        Parallel.ForEach(listDt.AsEnumerable <DataRow>, dr =>
        {
            ReplaceItem(dr, tableName, dic);
        });


Parallel.ForEachを用いることで、単純はループ処理も並列化することが出来ます。

何でもかんでも並列化すると、メモリを食ったりするので使いどころが難しいですが

使いこなせれば面白いですね。

  • ブログランキング・にほんブログ村へ
  • FC2ブログランキングへ
  • 人気ブログランキングへ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)