2011-12-22 7 views
1

나는 멀티 스레드 응용 프로그램이 있습니다. 4 개의 스레드, 3 단계의 연속 데이터 처리를위한 3 개의 작업자 스레드 및 표시를위한 1 개의 UI 스레드가 있습니다. 다양한 센서에서 나오는 데이터를 처리하기 위해 실시간 또는 거의 실시간으로 적용됩니다. 현재 UI 용 MFC를 사용하고 있지만, 디자인에 대해 이야기하고 있기 때문에별로 중요하지 않다고 생각합니다.멀티 스레드 응용 프로그램의 디자인 패턴을 선택하는 데 필요한 조언

이 응용 프로그램에 적합한 아키텍처 또는 디자인 패턴을 찾고 있습니다. 저자의 웹 사이트에서 Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects (POSA2) 및 예제 코드를 읽었습니다.

하지만 여전히 내가하는 디자인 패턴 (들)

  • 리더/추종자들
  • 반 동기화/하프 비동기 응용 프로그램에 적합 할 것을 결정할 수 없습니다
  • 원자로
  • Proactor
  • 액티브 오브젝트

사람이 힌트를 줄 수 또는 멍청이?

+0

우리는 Windows 플랫폼에서 C++를 사용하는 @CesarCanassa –

+0

언어 문제는 선택의 여지가 귀하의 언어에 따라 이러한 '디자인 재잘'내장 언어 자체에 무엇의 일부를 얻을 것이다 언어가 당신과 함께 있습니까? –

+0

폴 (Paul), 언제/미래에 볼 수 있는지/발견 할 수 있습니까? 그리고이 질문에 아직 답하지 않은 이유는 무엇입니까? –

답변

1

넘어 POSA2, 당신이 찾을 수 있습니다 생각이 도움이 :

패턴 언어 병렬 프로그래밍에 대한 http://www.cise.ufl.edu/research/ParallelPatterns/

또한 관련 책 추천 : 티모시 G 맷슨에 의해 "병렬 프로그래밍에 대한 패턴을" 비벌리 A. 샌더스 베르나 L. Massingill

리소스 병렬 패턴 http://www.cs.uiuc.edu/homes/snir/PPP/

0123에 414,, 당신은 정말 PPL로 보일 것입니다 Windows에서 C++를 사용하고있는 점을 감안 :

http://parallelpatternscpp.codeplex.com/

멀티 코어 아키텍처에 분해 및 조정 콜린 캠벨, 에이드 밀러 디자인 패턴은 Microsoft Visual C++와 병렬 프로그래밍 특히, http://msdn.microsoft.com/en-us/library/gg675934.aspx

여기 섹션 "오른쪽 패턴을 선택하기"를 살펴 : 당신은 MSDN을 통해 책 전체를 (자유롭게) 읽을 수 http://msdn.microsoft.com/en-us/library/gg663528.aspx

"파이프 라인은 많은 응용 프로그램에서 발생합니다 신속 요구 사항과이 섹션의 조언을 비교함으로써

, 나는 파이프 라인 패턴 (7 장) 좋은 경기가 될 것 같아요. 주식 시세 표시기 테이프의 값, 사용자 생성 마우스 클릭 이벤트 또는 네트워크를 통해 도착하는 패킷과 같은 실시간 이벤트 스트림에서 데이터 요소를 수신하면 파이프 라인을 사용할 수 있습니다. 파이프 라인을 사용하여 압축 및 암호화와 마찬가지로 데이터 스트림의 요소를 처리하거나 비디오 프레임의 스트림에 변환 작업을 적용 할 수 있습니다. 이 모든 경우에 데이터 요소가 순차적으로 처리되는 것이 중요합니다. 병렬 루프는 처리 순서를 유지하지 않으므로 이러한 경우에는 병렬 루프를 사용할 수 없습니다."

더 :... http://msdn.microsoft.com/en-us/library/gg663538.aspx

+0

나는 병렬 프로그래밍 측면에서 답을 찾지 않을 것이다. 나는 이미 그 부분을 커버했다고 생각합니다. 내 질문을 읽으면 동시 프로그래밍을위한 디자인 패턴을 찾고 있습니다. 그러나 언제나처럼, 어쨌든 고마워. –

+0

나는 본다. 원자로와 프록터 사이의 차이점은 처리의 동시성으로 요약됩니다. "다양한 센서에서 오는 데이터"는 "다중 서비스 요청"처럼 들립니다. 동시에 부분 일치합니까? 동기식 또는 비동기식 요청 처리가 응용 프로그램과 더 잘 어울리는 지 여부는 다음과 같습니다. 반응기 패턴 - 여러 서비스 요청을 동시에 수신하지만 동 기적으로 순차적으로 처리하는 이벤트 기반 응용 프로그램. Proactor 패턴 - 여러 요청을 비동기 적으로 수신하고 처리하는 이벤트 기반 응용 프로그램입니다. – Matt

+0

동시에 - http://www.artima.com/articles/io_design_patterns2.html에 따르면 - "ACE Proactor는 MS-Windows에서 훨씬 뛰어난 성능과 견고성을 제공합니다. Windows는 매우 효율적인 비동기 API를 제공하므로, 운영 체제 수준의 지원을 기반으로합니다. " – Matt

관련 문제