5개의 스레드를 스레드풀에 생성해 놓고 이 작업이 끝난 후에 print 문으로 콘솔창에 출력하는 내용
using System;
using System.Threading;
namespace ThreadPoolTest
{
class Program
{
private const int NumThreads = 5;
private static int[] inputArray;
private static double[] resultArray;
private static ManualResetEvent[] resetEvents;
private static void Main(string[] args)
{
inputArray = new int[NumThreads];
resultArray = new double[NumThreads];
resetEvents = new ManualResetEvent[NumThreads];
Random rand = new Random();
for (int s = 0; s < NumThreads; s++)
{
inputArray[s] = rand.Next(1,5000000);
resetEvents[s] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), (object)s);
}
Console.WriteLine("Waiting...");
WaitHandle.WaitAll(resetEvents);
Console.WriteLine("And the answers are: ");
for (int i = 0; i < NumThreads; i++)
Console.WriteLine(inputArray[i] + " -> " + resultArray[i]);
}
private static void DoWork(object o)
{
int index = (int)o;
for (int i = 1; i < inputArray[index]; i++)
resultArray[index] += 1.0 / (i * (i + 1));
resetEvents[index].Set();
}
}
}
출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0OYkw&articleno=177#ajax_history_home
'C#' 카테고리의 다른 글
C# thread에 파라미터 전달하기 (0) | 2013.04.24 |
---|---|
C#으로 이미지파일을 DB에 넣는방법 (0) | 2013.04.24 |
다중 쓰레드 (0) | 2013.04.24 |
C# ThreadPool Usage (0) | 2013.04.24 |
멀티스레드 구현하기(threadpool) (0) | 2013.04.24 |