2011-09-22 5 views
2

확실한 답변을 놓친 경우 용서해주세요.하지만이 문제를 둘러 보았습니다. 찾을 수 없습니다. 가능한 뮤텍스를 사용하는 멀티 스레드 프로그램을 작성하려고합니다. 다음은 기본 디자인입니다. 나는 휠을 재현하고 있는지 알고 싶다. 만약 내가 그렇다면, 디자인 패턴/알고리즘/접근 방식이 무의식적으로 차용인지 알고 싶다.어떤 디자인 패턴입니까? 그것은 스레드와 관련이 있습니다

기본적으로 스레드 묶음에 대한 메시지 대기열 인 전역 개체가 있습니다. 스레드가 생성 될 때마다 메시지를 제출하는 함수를 얻습니다. 스레드 만 함수에 액세스 할 수 있습니다. 메시지가 함수에 제출되면 객체는 메시지를 가져 와서 큐에 넣습니다.

이것은 기본적으로 스레드 간 통신을위한 공유 메모리로 작동하는 FIFO 대기열입니다. 단, 전역 개체 만 메시지를 추가하거나 삭제할 수 있습니다. 모든 스레드는 정기적으로 큐를 확인합니다. 사용할 수있는 메시지를 찾을 때마다 메시지를 자체에 복사 한 다음 전역 개체에 데이터를 읽음을 알립니다. 스레드가 메시지를보고 필요로하지 않으면 메시지를 읽었다는 신호를 보내지 만 메시지를 복사하지는 않습니다. 모든 스레드가 데이터를 보았을 때 전역 개체는 메시지를 삭제합니다.

그게 전부입니다. 그것은 기본입니다. 그것은 기억을 먹는다. 이것은 단순히 변수 등을 잠그는 것을 의미합니다.

+1

신중하게 생각하면 동기화 및 원자 변수가 필요하다는 것을 알 수 있습니다. 어떻게 "당신이 메시지를 읽었다는 신호를 보내"? 메시지를 읽은 사람을 어떻게 추적합니까? 악마가 세부 사항에 있습니다. –

+0

+1은 디자인 패턴이 무엇인지에 대한 단서를 제공합니다. 디자인 패턴에 대한 질문은 관련 목록을 참조하십시오. – piokuc

답변

1

It is a message bus. 직접 작성하지 마십시오. 아마도 귀하의 언어로 된 프레임 워크가있을 것입니다.

관련 문제