mqueue 예제

  • 0

mqueue 예제

VxWorks 및 QNX와 같은 대부분의 RTOS(실시간 운영 체제)는 메시지 큐잉을 기본 프로세스 간 또는 스레드 간 통신 메커니즘으로 사용하도록 권장합니다. 메시지 전달과 CPU 스케줄링 간의 긴밀한 통합은 실시간 응용 프로그램에 대한 RTOSes의 유용성에 대한 주된 원인으로 기인합니다. 스레드 간 통신에 메시지 큐 기반을 장려하는 상용 RTOS의 초기 예로는 1980년대 초까지의 VRTX 및 pSOS+도 포함됩니다. Erlang 프로그래밍 언어는 프로세스를 사용하여 동시성을 제공합니다. 이러한 프로세스는 메시지 큐를 사용하여 비동기적으로 통신합니다. gcc queue_example_threads.c-o queue_example_threads -lrt-lpthread를 컴파일하여 위의 것을 컴파일합니다. 아래 예제에서는 Linux에서 POSIX 메시지 큐를 사용하여 서버와 클라이언트 간의 프로세스 간 통신을 보여 줍니다. 서버는 항공편의 좌석 번호또는 이와 유사한 토큰 번호를 관리합니다. 요청 시 클라이언트에 토큰 번호를 제공하는 것은 서버의 작업입니다.

일반적인 시나리오에서는 서버에 토큰 번호를 요청하는 클라이언트가 여러 개 있을 수 있습니다. 서버의 메시지 큐 이름은 클라이언트에 알려져 있습니다. 각 클라이언트에는 서버가 응답을 게시하는 자체 메시지 큐가 있습니다. 클라이언트가 요청을 보내면 해당 메시지 큐 이름을 보냅니다. 서버는 클라이언트의 메시지 큐를 열고 응답을 보냅니다. 클라이언트는 메시지 큐에서 응답을 선택하고 해당 클라이언트의 토큰 번호를 읽습니다. 프로세스 아키텍처는 다음과 같습니다. 다음은 클라이언트에서 중지하라는 „종료” 메시지를 받을 때까지 클라이언트로부터 메시지를 수신하는 서버의 간단한 예입니다. 이벤트 알림 시스템 및 게시/구독 시스템에 다른 비동기 예제가 있습니다. 다른 노드의 Mqueue 서버에 연결하려면 그에 따라 MQ_NODE 환경 변수를 설정합니다. mq_open() 스텁은 이 변수를 검사하여 서버를 검색할 노드를 결정합니다.

자세한 내용은 QNX 유틸리티 참조를 참조하십시오. 프로그램이 빈 큐에 쓴 후 큐가 비어 있는 큐에서 비빈으로 전환되었다는 신호가 표시되었습니다. 예제 프로그램이 두 번째로 실행될 때는 다음을 생성해야 합니다. 예를 들어 AJAX(비동기 자바스크립트 및 XML)를 사용하여 텍스트, JSON 또는 XML 메시지를 비동기적으로 전송하여 보다 관련성 이 있는 정보로 웹 페이지의 일부를 업데이트할 수 있습니다. Google은 사용자의 부분적으로 입력된 쿼리를 Google 서버로 전송하고 사용자가 입력하는 과정에 관심이 있을 수 있는 전체 쿼리 목록을 반환하는 검색 기능인 Google 제안(Google 제안)에 이 방법을 사용합니다.