메시지 버스는 복잡한 것이고 버스에 연결된 단일 구성 요소의 메시지 대기열 표현을 간과하지 않습니다.
주석에서 언급했듯이 std::queue<MessageType,std::list<MessageType> >
은 스레드 안전성 외에도 주요 사용 사례를 충족해야하지만 고려해야 할 사항이 많습니다.
여기 스레드 안전 큐 구현을위한 샘플입니다 : STTCL에서 EventQueue.h. std::queue<__T__,std::list<__T__> >
에 STTCL_DEFAULT_DEQUEIMPL(__T__)
값을 입력하면 해당 항목에 대해 find()
조작을 포함하여 사용자 요구에 맞아야합니다.
응용 프로그램의 사용 사례에 따라 특정 유형의 메시지에 대한 배포 및 구독을위한 다양한 메시징 패턴 중에서 선택해야합니다.
이 주제를 다루려고 할 때 EAI catalog of messaging patterns이 매우 유용하다는 것을 알았습니다. 이 외에도
: 항상 (항상!예 세 느낌표!) 출발 전송에서 메시지 페이로드!
메시징 패턴을위한 주목할만한 전송 시스템은 다양한 언어에 대한 바인딩을 제공하는 0MQ입니다.그러나 다른 것들은 C++ 구현 (원시 소켓 기반 구현 또는 boost::asio
과 같은 sthth 포함)에서 사용할 수 있습니다.
메시지 페이로드 디자인에 관해서는 Google Protocol Buffers이 분산 시스템 (임베디드 포함)의 모든 요구 사항에 가장 유용하고, 이식 가능하며 유연합니다.
뭔가 안전한 스레드입니다. –
임의의 위치에서 요소 제거가 자주 발생하지 않는 경우 - 무작위를 의미하지만 배열 인덱스 임의대로 검색되었거나 임의적으로 검색 되었습니까? – Sarien
@sarien 개체는 주어진 시간에 특정 메시지의 수신을 거부 할 수 있습니다. – OMGtechy