2017-03-03 2 views
0

나는 어떤 리소스 (데이터베이스, 파일, 통신 인터페이스, 네트워크 연결, 로그, ...)와 원하는 다른 스레드를 실제로 처리하는 단일 스레드가있는 디자인 패턴의 "공식적인"이름이 무엇인지 궁금합니다. 그 리소스로 뭔가를하려면이 스레드에 메시지를 전달해야하며, 선택적으로 완료에 대한 알림을 기다리는 중입니까?뮤텍스와의 동기화 대신 비동기 요청을 사용하는 멀티 스레딩 디자인 패턴의 이름은 무엇입니까?

이 방법을 "중앙 컨트롤러"라고 지칭하는 기사를 찾았지만 인터넷 검색으로 특정 문구를 많이 알 수는 없습니다.

다른 한편으로 이것은 GUI 나 운영 체제가 응용 프로그램에 일부 메시지를 전달하는 것과 관련이 없으므로 정확히 "메시지 펌프"또는 "이벤트 대기열"이 아닙니다.

"작업 대기열"또는 "스레드 풀"도 아닙니다.이 단일 스레드는이 단일 활동 (단일 리소스 관리)에만 사용되며, 처리되는 모든 것에 대해서는 사용되지 않습니다.

예를 들어 한 스레드가 관리하는 특수 통신 인터페이스가 있다고 가정합니다 (예를 들어, Modbus가 될 수는 있지만 실제로는 문제가되지 않습니다). 이 인터페이스는 스레드와 메시지 대기열이있는 객체 내부에 완전히 숨겨져 있습니다. 이 객체에는 해당 통신 인터페이스를 사용하여 데이터를 "읽거나"쓸 수있는 멤버 함수가 있으며 이러한 함수는 특별한 동기화없이 여러 스레드에서 사용할 수 있습니다. 이는 내부적으로이 함수의 코드가 인수를 메시지/요청으로 변환하고 대기열을 통해 처리기 스레드로 전달하기 때문입니다. 처리기 스레드는 한 번에 하나씩 이러한 요청을 처리합니다.

이 디자인 패턴은 공유 리소스를 보호하는 뮤텍스와 명시 적으로 동기화하는 대신 사용될 수 있습니다.이 뮤텍스는 해당 리소스와 상호 작용하려는 각 스레드에 의해 잠기거나 잠금 해제되어야합니다.

+0

http://wiki.c2.com/?QualityWithoutaName 디자인 패턴이 중요하더라도 이름에 너무 집중하지 않을 것입니다. (http://designpattern.ninja/news/2016/06/04/about- 디자인의 편의성 패턴). –

+0

@ MatíasFidemraizer - 제목에 대해 약간의 독서를하고, 다른 솔루션과 실제로 비교하는 방법에 대한 이름을 아는 것이 좋을 것입니다. 지금까지 여러 목적으로 여러 번 구현했는데 가끔은 합리적이었습니다. 때때로 뮤텍스를 사용하기를 바랍니다. 나는이 패턴에 대한 이름을 가지고 무엇을 찾아야할지 알고 싶습니다 (; –

답변

1

브로커 패턴 ​​될 수있다 여기에 맞는 가장 좋은 패턴 :

브로커 아키텍처 패턴

사용할 수 있습니다 원격 서비스 호출에 의해 상호 작용을 분리 할 구성 요소와 소프트웨어 시스템을 분산 구조. 중개인 구성 요소는 전달 요청과 같은 조정 통신을 담당합니다 (예 : ). 결과 및 예외를 전송하기위한 도 포함됩니다.

1

단순히 그것을 asynchronous IO, 또는 그 이상의 인기를 얻기 쉬운 부를 것이다 : IO 비 차단.

다음과 같이 실제적으로 의 문제 "단일 스레드 쪽"이 세부적으로 수행하는 작업은 무엇입니까? 데이터베이스로 "비동기"를 처리하면 차이가 있습니까? 또는 다른 원격 서버?

해당 속성은 다음과 같습니다. 코드가 응답을 기다리지 않고 있습니다. 정보가 "나중에"나올 것으로 기대합니다.