thread pool 질문..
글쓴이: psjcap / 작성시간: 목, 2004/02/26 - 9:48오후
pthread를 이용해서 thread pool을 만들었습니다..
mutex, condition variable을 이용해서 queue를 만들고..
queue가 full상태이거나 empty상태일 경우에 enqueue, dequeue 시도시 블록되게 하였습니다..
즉 queue에 thread들이 대기하고 있다가 queue로 메세지가 들어오면 한 thread가 그 메세지를 처리하고 나머진 다시 block되게 작성을 하였습니다..
그런데 이 thread pool 크기를 늘리기도 하고 줄이기도 하려고 합니다..
문제는.. queue에서 메세지가 오길 기다리고 있는 thread를 cancel 처리 부분이 무지 까다롭군요..
즉 블록시켜 놓고.. cancel 된다거나 하는 문제입니다..
pthread_cleanup_push, pthread_cleanup_pop으로..
일단 unlock 해 놓고 볼까도 생각해 보았지만..
오히려 문제가 더 많이 생길것 같더군요..
혹시 이런 식으로 구현하여 보신 분이나..
다른 좋은 방법이 있으면 조언 부탁드립니다..
그럼 좋은 하루 되셔요..^^"
Forums:
Re: thread pool 질문..
Queue로 하는것 보다는 Stack으로 하심이
Locality에 더 이롭지 않을까 라는 생각을 합니다^^
에궁 딴소리를 해버렸네요;;
사실 아래의 내용이 이해가 않가요( ..)
cancel 처리 부분이란게 이해가 않데요..ToT
제가 머리가 나빠서..ToT
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
Re: thread pool 질문..
작업 양(큐에 쌓이는 양)을 모니터링 하다가 쓰레드를 줄여겠다
싶으면, 종료를 뜻하는 작업을 넣어 주는 구조는 어떨까요?
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
Re: thread pool 질문..
오호~ :)
멋쩌요~~
음.. 아직도 고민 중..
밤새도록 고민해서.. 위와 같은 방법이 아니라..
다른 방법을 생각해 내었습니다..
쓰레드 풀 설계에 관련되어서 지식이 워낙 부족한터라..ㅠㅠ
일단 큐를 두개 만들고..
하나의 큐는 일이 없는 쓰레드들..
하나의 큐는 일을 하고 있는 쓰레드들을 넣어 둡니다..
그래서 데이타가 들어오면 놀고 있는 쓰레드에서 하날 꺼내서..
작업을 시키고.. 일을 하고 있는 큐에 넣어두고..
일이 끝나면 그 쓰레드는 다시 놀고 있는 쓰레드가 들어있는 큐로 다시 들어가는 방식을 생각했습니다..
그래서 쓰레드 양을 조절할 때는 놀고 있는 쓰레드 큐에서 쓰레드를 꺼내서 cancel 시키는 방법이지요..
보통 어떤 식으로 구현을 하시는지 생각할 수록 더더욱 궁금해 지네요..
그럼 많은 조언 부탁드립니다...^__^"
댓글 달기