2011-10-22 6 views
2

pthreads으로 스레드를 생성한다고 가정하고 이후에 새로운 작업을 보내어 으로 초기화 할 수 있습니까? 그렇다면 새 스레드를 만드는 데 리소스를 낭비하지 않으시겠습니까? 예를 들어, 나는 3 개의 쓰레드를 만들고, 2 개의 쓰레드 시그널을 완성하고, 그것을 죽이고 새로운 것을 시작하지 않고 또 다른 "작업"을 보낸다. 감사.스레드를 활성 상태로 유지하고 다른 작업 부하를 줄 수 있습니까?

답변

3

예, 아파치와 같은 서버가 성능을 향상시키기 위해 수행하는 작업입니다. 디자인 패턴은 Thread pool pattern이고 pthread를 사용하는 다양한 구현 (예 : this one)이 있습니다.

물론 목표가 무엇인지에 따라 구현을 최대한 간단하게 유지하고자 할 수 있습니다.

0

물론. 예를 들어 생산자 - 소비자 패턴을 사용할 수 있습니다. 여기에 example in C#이 있지만 pthread에서도 쉽게 구현할 수 있습니다.

5

일반적으로 간단한 양식은 일반 (작업) queue입니다. 원칙적으로 뮤텍스에 의해 보호되는 대기열 구조 (연결된 목록)를 유지 관리합니다. 일반적으로 condition variables은 주/제작자 스레드가 새 작업을 사용할 수 있음을 작업자 스레드에 알리기 위해 사용되므로 폴링 할 필요가 없습니다.

유용 할 수있는 일부 이전 SO 질문

은 다음과 같습니다 : 귀하의 질문에 검색 키워드 "스레드 풀링"또는 "입니다

0

스레드 풀 ". 이 용어를 사용하면이 사이트와 Google에서도 충분한 정보를 얻을 수 있습니다.

관련 문제