2016년 11월 8일 화요일

[Unix/Linux] Thread Pool 구현 [1]









Thread Pool을 만들 일이 있어 포스팅 합니다.


일단 Event Driven 형식으로 Epoll Event가 오면, 작업을 시작하는데,

Non-Block을 하려하지만 큰 파일 전송 상황을 가정하여 ThreadPool로 구현합니다.


구현을 위해서, thread 작업 클래스가 필요하며,

작업이 끝남을 알기위해, flag를 넣었습니다.


일단 기초 작업이며,


이것을 base로 작업하시면 요긴하실 것 같습니다.
























 우선적으로 threadPool로 사용할 클래스입니다.
 작업 시 필요한 것을 class화 시키고, flag 또한 dataClass에 넣습니다.






































작업이 끝남을 확인하기 위한 ch_flag Test입니다.

















































StartService 시, false -> true로 바꾸고
do_work(thread 작업) 시 true -> false로 재변환 합니다.

그리고 endService() 에서 종료를 검사합니다.

















다음은 실행 시 결과입니다.



이를 바탕으로 thread pool을 구현하겠습니다.



댓글 없음:

댓글 쓰기