2010-07-08 8 views
2

C++ (슬롯/신호 아님)에서 크로스 플랫폼 다중 스레드 메시지 대기열 구현을 찾고 있습니다. 피사체 관측자 패턴을 기반으로하는 것이 더 좋습니다.메시지 대기열, C++ 멀티 스레드

+0

어떤 플랫폼 에서요? 너 뭐하려고 했니? 우리가 당신을 도울 수 있도록 도와주세요. – jer

+0

Windows, Linux 플랫폼. 비디오 서버 (GUI 없음)를 만들고 있습니다. – dima

답변

0

Apache ActiveMQ를 사용해 볼 수 있습니다. http://activemq.apache.org. 매우 견고합니다. 우리는 FIX 메시징 플랫폼에 사용합니다. 응답 성이 좋고 구성도 쉽습니다.

0

인텔의 오픈 소스 라이브러리 Threading Building Blocks을 살펴보십시오. 그것들은 크로스 플랫폼이며, 마지막으로 나는 자물쇠가없는 컨테이너를 가지고있는 것으로 보입니다.

1

SVN 저장소가있는 "ISL"오픈 소스 프로젝트 ("인터넷 서버 라이브러리", C++)를 살펴보십시오. isl :: AbstractMessageBroker 클래스는 다음과 같은 지하실에 적합합니다. 작업. 이것은 모든 메시지 브로커 서브 시스템 (DBus, JMS, AMQP 등)에 대해 아주 단순하지만 확장 가능한 스 켈리 톤입니다. 각 클라이언트는 사전 시작된 스레드의 풀에서 2 개의 스레드에 의해 제공됩니다. 하나는 전송 및 처리 메시지에서 메시지를 수신하고 다른 하나는 전송 메시지로 전송하기위한 것입니다. 그래서, 실제로 메시징 시스템을 구현하기 위해 적어도 세 개의 가상 방법 다음 오버라이드 (override) 할 필요 사용의

isl::AbstractMessageBroker::receiveMessage(...); 
    isl::AbstractMessageBroker::processMessage(...); 
    isl::AbstractMessageBroker::sendMessage(...); 

예는 트렁크/예/EchoMessageBroker 디렉토리에 있습니다. 응답 클라이언트가 에코 메시지를 보내고 "bye \ r \ n"메시지에서 연결을 종료하고 SIGINT에서 종료됩니다.