mqueue 예제

Posted on

아래 예제에서는 Linux에서 POSIX 메시지 큐를 사용하여 서버와 클라이언트 간의 프로세스 간 통신을 보여 줍니다. 서버는 항공편의 좌석 번호또는 이와 유사한 토큰 번호를 관리합니다. 요청 시 클라이언트에 토큰 번호를 제공하는 것은 서버의 작업입니다. 일반적인 시나리오에서는 서버에 토큰 번호를 요청하는 클라이언트가 여러 개 있을 수 있습니다. 서버의 메시지 큐 이름은 클라이언트에 알려져 있습니다. 각 클라이언트에는 서버가 응답을 게시하는 자체 메시지 큐가 있습니다. 클라이언트가 요청을 보내면 해당 메시지 큐 이름을 보냅니다. 서버는 클라이언트의 메시지 큐를 열고 응답을 보냅니다. 클라이언트는 메시지 큐에서 응답을 선택하고 해당 클라이언트의 토큰 번호를 읽습니다. 프로세스 아키텍처는 다음과 같습니다. 그러나 동기 동작이 적절하지 않은 시나리오가 있습니다. 예를 들어 AJAX(비동기 자바스크립트 및 XML)를 사용하여 텍스트, JSON 또는 XML 메시지를 비동기적으로 전송하여 보다 관련성 이 있는 정보로 웹 페이지의 일부를 업데이트할 수 있습니다.

Google은 사용자의 부분적으로 입력된 쿼리를 Google 서버로 전송하고 사용자가 입력하는 과정에 관심이 있을 수 있는 전체 쿼리 목록을 반환하는 검색 기능인 Google 제안(Google 제안)에 이 방법을 사용합니다. 이 목록은 사용자 유형으로 비동기적으로 업데이트됩니다. 예제 프로그램이 처음 실행될 때 출력은 다음과 같이 되어야 합니다. 위의 두 예제에서 받는 사람 중 하나가 추락한 경우 정보를 보낸 사람이 기다려야 하는 것은 의미가 없습니다. 모든 메시지 큐는 경로 이름 공간에 있으므로 최종 사용자가 큐의 상태를 쉽게 확인할 수 있습니다. 셸에서 사용자는 먼저 디렉터리를 Mqueue가 소유한 접두사로 변경해야 합니다. 다음은 클라이언트에서 중지하라는 “종료” 메시지를 받을 때까지 클라이언트로부터 메시지를 수신하는 서버의 간단한 예입니다. 프로그램이 빈 큐에 쓴 후 큐가 비어 있는 큐에서 비빈으로 전환되었다는 신호가 표시되었습니다. 예제 프로그램이 두 번째로 실행될 때 는 다음을 생성해야 합니다. mq_open() 스텁은 이 변수를 검사하여 서버를 검색할 노드를 결정합니다. 자세한 내용은 QNX 유틸리티 참조를 참조하십시오. 사용 중널리 알려진 많은 통신 프로토콜이 동기적으로 작동합니다.

월드 와이드 웹 및 웹 서비스에서 사용되는 HTTP 프로토콜은 사용자가 웹 페이지에 대한 요청을 보낸 다음 회신을 기다리는 명백한 예를 제공합니다.