前言:根据C++ boost实现消息队列
消息的形式可以自定义,这里消息的内容为字符串
#include <iostream>
#include <cstring>
#include<boost/interprocess/ipc/message_queue.hpp>
#include<vector>
进程A是发送消息的进程
int MessageQueue_A()
{
try
{
char MessageStr[100]="Hello World";
//erase previous message queue
message_queue::remove("Message_Queue");
//creat a message queue
message_queue My_mq(create_only, "Message_Queue", 100, sizeof(MessageStr));
//send 100 message
for (int i = 0; i < 10; i++)
{
std::cout << "Please input the Send Message:";
std::string data;
std::getline(std::cin, data);
memcpy(MessageStr, data.c_str(),sizeof(data));
std::cout << MessageStr << std::endl;
My_mq.send(&MessageStr, sizeof(MessageStr), 0);
}
}
catch (interprocess_exception& e)
{
std::cout << e.what() << std::endl;
return 1;
}
return 0;
}
进程B是接受消息
int Message_Queue_B()
{
try
{
char MessageStr[100] = "Hello World";
//open a message queue
message_queue My_mq(open_only, "Message_Queue");
unsigned priority;
message_queue::size_type received_size;
//receive
while (true)
{
My_mq.receive(&MessageStr, sizeof(MessageStr), received_size, priority);
std::cout << "Recive Message:" << MessageStr << std::endl;
}
}
catch (interprocess_exception& e)
{
std::cout << e.what() << std::endl;
return 1;
}
}