본문 바로가기
C#

thread pool 이용하기

by violetoz 2013. 4. 24.

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 / (* (+ 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