일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 윈도우 모바일
- 거제도
- 신석현
- windows mobile 6.5
- 훈스닷넷
- winmodev
- 소년포비소프트
- 실버라이트 코리아
- 윈모데브
- 황광진
- 윈도데브
- 마이크로소프트
- 서진호
- 옴니아2
- 김춘배
- UX베이커리
- 소년포비
- 윈도우폰
- 윈도우폰7
- 주신영
- 헤이맨
- 신동혁
- 루나네스
- 윈도우모바일
- 스마트폰
- 쉐어포인트코리아
- MIX10
- 지승욱
- 안드로이드
- 데브피아
- Today
- Total
소년포비의 세계정복!!
[C#] ThreadPool 이용 본문
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();
}
}
}
'프로그램 세상 > C#' 카테고리의 다른 글
[C#] 다중서버관리 (0) | 2009.11.11 |
---|---|
[C#] 파일 백업 툴 FileSyncer (0) | 2009.11.09 |
[C#] 체스 게임 (0) | 2009.11.03 |
[C#] 레지스트리 값 읽고, 쓰기 방법 2 (0) | 2009.10.29 |
[C#] 초보자분들을 위한 기초강좌 (0) | 2009.10.28 |