Parallel ってのが追加されるのは、知ってたんだけど、「デブサミ 2010 【18-D-1】.NET Framework 4概要」で動いているのを初めて見たので試してみた。
using System; using System.Threading; using System.Threading.Tasks; class Program { delegate void Normal(int start, int end); static void Main(string[] args) { NonParallel(); // 通常 Parallel.For(1, 30, ParallelMethod); // Parallel Console.ReadKey(); } private static void NonParallel() { Normal n = NormalMethod; n.BeginInvoke(1, 10, null, null); Normal n1 = NormalMethod; n1.BeginInvoke(10, 20, null, null); Normal n2 = NormalMethod; n2.BeginInvoke(20, 30, null, null); } private static void NormalMethod(int start, int end) { for (int index = start; index < end; index++) { Console.WriteLine("Thread ID:{0} Index:{1}", Thread.CurrentThread.ManagedThreadId, index); } } private static void ParallelMethod(int index) { Console.WriteLine("Thread ID:{0} Index:{1}", Thread.CurrentThread.ManagedThreadId, index); } }
Parallel を使用しない場合は、デリゲート の BeginInvoke でマルチスレッドっぽくしてみた。
実行結果
通常 | Parallel |
---|---|
Parallel を使った方が実行結果がばらけてる、それとスレッドを何個使うのか不明。数字を増やすと使うスレッド数も増えてた。規則性があるのかな?