Upload
takaaki-suzuki
View
5.403
Download
0
Embed Size (px)
DESCRIPTION
2011/09/17 Hokuriku.NET C# -TPL入門- セッション資料
Citation preview
堅牢性 信頼性 応答性
堅牢性 信頼性 応答性
堅牢性 信頼性 応答性
1. using System;2. using System.Linq;3. using System.Threading;4.
5. namespace ConsoleApplication6. {7. class Program8. {9. static void Main()10. {11. int lower = 0;12. int upper = 10000;13. var source = Enumerable.Range(lower, upper).ToArray();14. int chunk = (upper - lower) / Environment.ProcessorCount;15. var threads = new Thread[Environment.ProcessorCount];16.
17. for (int i = 0; i < threads.Length; i++)18. {19. int start = chunk * i + lower;20. int end = i < threads.Length - 121. ? start + chunk22. : upper;23. threads[i] = new Thread(() =>24. {25. for (int j = start; j < end; j++)26. {27. //----- Do Something28. Console.WriteLine(source[j]);29. }30. });31. }32.
33. foreach (var thread in threads) thread.Start();34. foreach (var thread in threads) thread.Join();35. }36. }37. }
1. using System;2. using System.Linq;3. using System.Threading;4.
5. namespace ConsoleApplication6. {7. class Program8. {9. static void Main()10. {11. int lower = 0;12. int upper = 10000;13. var source = Enumerable.Range(lower, upper).ToArray();14. int chunk = (upper - lower) / Environment.ProcessorCount;15. var threads = new Thread[Environment.ProcessorCount];16.
17. for (int i = 0; i < threads.Length; i++)18. {19. int start = chunk * i + lower;20. int end = i < threads.Length - 121. ? start + chunk22. : upper;23. threads[i] = new Thread(() =>24. {25. for (int j = start; j < end; j++)26. {27. //----- Do Something28. Console.WriteLine(source[j]);29. }30. });31. }32.
33. foreach (var thread in threads) thread.Start();34. foreach (var thread in threads) thread.Join();35. }36. }37. }
1. using System;
2. using System.Linq;
3. using System.Threading.Tasks;
4.
5. namespace ConsoleApplication
6. {
7. class Program
8. {
9. static void Main()
10. {
11. int lower = 0;
12. int upper = 10000;
13. var source = Enumerable.Range(lower, upper).ToArray();
14. Parallel.For(lower, upper, index =>
15. {
16. //----- Do Something
17. Console.WriteLine(source[index]);
18. });
19. }
20. }
21. }
実CPUに割り当てるスレッドの切り替え
タイムスライスの後に同じスレッドが割り当てられる場合は発生しない
CLR ThreadPool
UIThread
Global Queue
WorkerThread 1
LocalQueue 1
WorkerThread 2
LocalQueue 2
詳しくはWebで!!
スレッド
コレクション
パーティション
スレッドプール
要素
タスク並列ライブラリ
.NET アプリケーションの並列処理についての過去、現在、未来
.NETマルチスレッド・プログラミング入門
[雑記] スレッドプールとタスク
プログラミング .NET Framework 第3版
TPL入門 -インデックス
Let’s enjoy TPL!!