2011-02-10 4 views
0

다중 스레드 작업 발송자의 C/C++ 구현을 찾고 있습니다. 보스 스레드 (main 함수)는 작업을 읽습니다 (예 : while (1) 루프에서 msgrcv를 실행).다중 스레드 보스/작업자 모델의 C/C++ 구현

보스가 새 작업을 읽고 대상에 따라 해당 스레드로 작업을 보냅니다. 작업자 스레드가 작업을 실행합니다.

처음부터 다시 빌드 할 시간이 없으므로 준비된 솔루션을 찾고 있습니다.

업데이트 : 부스트를 사용할 수 없습니다. pthreads에 있어야합니다 (Linux)

답변

1

당신이 스레드 풀을 쓰고있는 것처럼 들리 네요. 하나는 here (boost 필요)입니다. 나는 "스레드 풀 (thread pool)"또는 이와 유사한 어떤 것을 검색하는 것이 다른 가능성을 가져올 것이라고 확신한다.

+0

죄송합니다, 부스트는 옵션이 아닙니다. – cateof

+1

스레드 풀링은 스티브가 구글처럼 말한 패턴입니다. – Reno

+1

은 스레드 풀이 필요합니다. 부스트를 사용할 수 없다면 특정 구현체를 사용할 필요는 없지만 코드를 살펴보고 어쨌든 어떻게 완료되는지 확인할 수 있습니다. – CashCow

3

가장 간단한 방법은 작업 변수를 기다리는 작업자가 작업 변수를 기다리는 것입니다. 작업 변수는 작업을 읽을 때 신호를받습니다.

조건을 확인하는 동안 잠긴 뮤텍스가 필요합니다. 조건 변수를 기다리면 상태가 알려질 때까지 연결된 뮤텍스가 자동으로 해제됩니다. 다시 상태를 확인해야합니다.

각 큐에 대해 하나의 조건 변수를 가질 수도 있고 모든 스레드에 대해 하나의 조건 변수를 가질 수도 있습니다. 이는 사용자가 크기 조정 방법에 따라 다릅니다.