쓰레드 풀(Thread Pool) 함써보자!!

Jerry 2012.03.23 11:12 Views : 30353

아... 글쓰다가...

날라갔네... 의욕상실... 흑흑흑...

 

여기서 첨으로 글쓰다보니... 이런 어처구니 없는 실수를....

이번일을 계기로... 항상 저장하는 습관과 열씸히 Sqler 에서 글쓰기!! 도전합니다~ㅎㅎ

  

 

제가 오늘 소개할 내용은... 쓰레드 풀!!!! 입니다~~ 짜잔~~~

 

혹시 쓰레드 풀(Thread Pool) 써보신적 있으신가요?

 

ㅎㅎ 사실 저도 쓰레드 풀은 커녕, 쓰레드도 거의 써본적이 없습니다..

 

헌데, 최근 2년동안 회사 내부에서 사용하는 프로그램을 개발하는데

예상치 못하게, 한번에 대량의 작업을 처리해야하는 요구하는 경우가 생기더군요...

 

음... 예를 들면, 7~8천명 정도의 사람들의 결제정보를 가지고 결제를 시도하는데,

1 by 1 으로만 결제가 가능한경우...

 

순차적으로 결제를 시도하게 되면 완료시점까지는 상당한 시간이 소요되게 됩니다...

 

그래서 고민하게 되었답니다.. 뭔가 시간을 줄일수 있는 방법이 없을까 하구요.

 

그때 발견한 녀석이 바로... 쓰레드 풀!!!! +_+

 

이 녀석을 잘 활용할 경우 대량의 작업처리시에 상당한 시간절약을 꽤할수 있으리~

확신했습니당!!!!

 

그래서 쓰레드 풀을 사용해 보기로 했지요... ㅎㅎ

우선, 쓰레드 풀에 대해 알아야 하니까... MSDN 을 뒤지기 시작했습니다.

 

다행이도, 쓰레드 풀에 대한 기본적인 내용은 MSDN 에서 잘 정리되어 있습니다.

참조 : http://msdn.microsoft.com/ko-kr/library/3dasc8as(v=vs.80).aspx

 

자.. 그럼 이제~~ MSDN 에서 제공하는 예제 소스를 이용해서...

Visual Stuido 실행시키시고~~ C# 콘솔 응용프로그램으로 함께~ 돌려보겠습니다.

 

1.PNG

 

어머나.. 어머나..

보이시나요??

 

10마리의 쓰레드가 풀에 잘들어가서 놀다가

Fibonacci 값을 잘 구해가지고 결과를 짜잔~~ 내고 있습니다.

 

만약 1마리의 쓰레드로 Fibonacci 값을 10개 구하게 하려면...

시간이 훨씬 더 걸립니다... 못 믿겠으면.. 시간체크 해보셈!!!

 

왜 그럴까요???ㅋㅋㅋ

 

어찌되었든.... 우핫핫!!! 바로 이거다 싶었습니다.

이 쓰레드 풀을 잘 활용하면... 쉽게 쓰레드 여러마리를 만들어서

일 을 막 시켜가지고... 결과를 빨랑빨랑 만들어 낼수 있으리라....

 

자자... 욕심을 더 부려 봅시다...

 

10마리의 쓰레드로 10초 걸린다 가정하면...

100마리로는 더 작업시간이 단축되지 않을까...

 

음.. 저는 화끈하게 한 1000만리 정도 만들고 싶었습니다..

 

그래서... 위에 예제소스를 요렇게 바꿔 보았습니다..

2.PNG

 

 우하하.. 만족만족!!!

 이제 엄청 빨라지겠죠!!! 슝슝!!! 바로 콘트롤+F5!!!

 

 ...그러나....

3.PNG

 

 

 이건 뭥미???

 WaitHandles 의 개수가 64보다 작아야 한다는 군요...

 핫....

 

 여기서, 잠시 정리해 보자면... MSDN 에서 소개되어 있는 쓰레드 풀 사용 방식에 핵심은

 ThreadPool.QueueUserWorkItem 함수를 이용해서 인스턴스 들을 쓰레드풀에 집어 넣고~

 WaitHandle.WaitAll 함수를 이용해서 쓰레드풀안에 들어가 있는 애들이 다 작업하고 결과가 나올때 까지

 기달리다가... 결과값 출력하는 건데...

 

 하하하.... 어이 없게도... WaitHandle 이라는 애는 64개 이상은 체크를 못하나 보더라구요...

 

 아... 좌절인가요... 이대로.. 그냥 1000마리의 쓰레드를 포기하기에는...

 저의 자존심이 허락치 않았습니다...

 

 그래서.. 도전 쓰레드 1000마리용 쓰레드 풀 만들기!!

 

 사실 여기서 부터가 진짜인데.. 지금 업무시간에 몰래 글쓰는 거라.. ㅋㅋㅋ

 

 여기서 살짝 마무리하고... 다음편 글에 도전 쓰레드 1000마리용 쓰레드 풀 만들기를 올릴께요~~

 

 좀 재미가 있으셨나 몰겠네요... 다들 흥미 없어 하는 주제인가?? ㅠ.ㅠ

 

 우야튼, 여기서 급 마무리..

 

 샬롬!!! ^^

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 568
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 1121
76 Python 초급 강좌 목차 - 1. Python 개발 환경 구성 file 코난(김대우) 2021.01.01 550
75 Python 초급 강좌 목차 - 0. Python 소개 file 코난(김대우) 2021.01.01 430
74 오픈소스 개발도구 - vscode 설치 (WSL 설치 포함) file 코난(김대우) 2020.12.20 200
73 지금 시작하는 개발자를 위한, 무료 Python 강좌 Top 5! file 코난(김대우) 2020.12.19 167
72 installshield 와 entityframwork 우와앙 2014.03.28 10742
71 Visual Studio Video 비디오 컨퍼런스 규니규니 2013.03.08 12851
70 Visual Studio 2012 신제품 발표회.(09/25 - 롯데호텔 잠실 3층) 쓸만한게없네(윤선식) 2012.09.24 12803
69 SqlBulkCopy 성능비교 지현명 2012.09.13 19302
68 Visual Studio 2012의 ALM(Application Life-cycle Management) 자료 [1] 코난(김대우) 2012.09.04 16566
67 기초T4Template - 간단예제와 MVC Scaffold 주석추가하기 [5] 한머리 2012.04.17 16495
66 기초 T4 template 강좌 - 자동 코딩 생성 프로그래밍 [3] 한머리 2012.04.10 18666
65 쓰레드 풀 함써보자! (쓰레드 1000마리용 쓰레드풀 만들기) Jerry 2012.03.27 27221
» 쓰레드 풀(Thread Pool) 함써보자!! [2] Jerry 2012.03.23 30353
63 CES2012에서 발표한 Kinect for Windows 소식! [2] 코난(김대우) 2012.01.10 14657
62 Visual Studio - ALM Summit 2011 동영상 / Day3 키노트 - The Microsoft Vision for ALM 코난(김대우) 2012.01.09 12619
61 Visual Studio - ALM Summit 2011 동영상 / Day2 키노트 - Project Patterns: From Adrenalin Junkies to Template Zombies 코난(김대우) 2012.01.09 13351
60 Visual Studio - ALM Summit 2011 동영상 / Day1 키노트 - ALM - With Power Comes Great Responsibility 코난(김대우) 2012.01.09 12523
59 익명 타입 알아내는 법 컴포지트 2011.09.22 17997
58 [C# 동영상 강좌] 20.컬랙션 SuYoung Kim(김수영) 2011.07.12 31481
57 [C# 동영상 강좌] 19.익명 형식 SuYoung Kim(김수영) 2011.07.12 26327





XE Login