消息队列
来源:互联网 发布:c 编程 猜字小游戏 编辑:程序博客网 时间:2024/05/21 18:08
消息队列
消息队列发送端
#include <boost/interprocess/ipc/message_queue.hpp>#include <iostream>#include <vector>#include <QThread>using namespace std;using namespace boost::interprocess;int main(int argc, char *argv[]){ try{ //Erase previous message queue message_queue::remove("message_queue"); //Create a message_queue. message_queue mq (create_only //only create ,"message_queue" //name ,100 //max message number ,sizeof(int) //max message size ); while(1) { for(int i = 0; i < 100; ++i) //Send 100 numbers { mq.send(&i, sizeof(i), 0); std::cout<<"send: "<<i<<endl; } QThread::sleep(10); } } catch(interprocess_exception &ex) { std::cout << ex.what() << std::endl; return 1; } return 0;}
消息队列接收端
#include <boost/interprocess/ipc/message_queue.hpp>#include <iostream>#include <vector>#include <QThread>using namespace boost::interprocess;int main(){ try{ //Open a message queue. message_queue mq (open_only //only create ,"message_queue" //name ); unsigned int priority; message_queue::size_type recvd_size; while(1) { for(int i = 0; i < 100; ++i) //Receive 100 numbers { int number; mq.receive(&number, sizeof(number), recvd_size, priority); printf("I:%d Rec:%d\n",i,number); if(number != i || recvd_size != sizeof(number)) return 1; } QThread::sleep(5); } } catch(interprocess_exception &ex) { message_queue::remove("message_queue"); std::cout << ex.what() << std::endl; return 1; } message_queue::remove("message_queue"); return 0;}
整理之后的消息队列
#include <BoostMsg.h>#include <boost/interprocess/ipc/message_queue.hpp> #include <iostream> #include <vector> using namespace boost::interprocess; int CreateMsg(const char* MsgQueName,int MaxQueLen,int MaxMsgLen){message_queue::remove(MsgQueName); //Create a message_queue. message_queue mq (create_only //only create ,MsgQueName//name ,MaxQueLen //max message number ,MaxMsgLen //max message size ); printf("Boost Msg Created Name:%s QueLen:%d MsgMaxLen:%d \n",MsgQueName,MaxQueLen,MaxMsgLen);return 0;}int OpenMsgToSend(char* BufMsg,const char* MsgQueName,int MsgLen){ try{ //Erase previous message queue //message_queue::remove("message_queue"); //Create a message_queue. message_queue mq (open_only //only create ,MsgQueName//name ); mq.send(BufMsg, MsgLen, 0); } catch(interprocess_exception &ex){ std::cout << ex.what() << std::endl; return 1; } return 0; } int OpenMsgToRec(char* RecivedMsg,const char* MsgQueName,int MaxReceivedLen){ try{ //Open a message queue. message_queue mq (open_only //only create ,MsgQueName //name ); unsigned int priority; message_queue::size_type recvd_size; memset(RecivedMsg,0,MaxReceivedLen);mq.receive(RecivedMsg, MaxReceivedLen, recvd_size, priority); return recvd_size;} catch(interprocess_exception &ex){ message_queue::remove("message_queue"); std::cout << ex.what() << std::endl; return 1; } message_queue::remove("message_queue"); return 0; } 。
Link boost进程间通信经常使用开发一篇全(消息队列,共享内存,信号)
0 0
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- <>消息队列
- 消息队列
- 关于截取字符串substr和substring两者的区别
- SpringMVC使用注解方式配置IOC
- 账户类 Account
- volatile 的学习要点
- 一句话理解PCI9052的LAS0RR
- 消息队列
- 题目2 括号配对问题
- sitemesh学习
- Vertx_web导出excel文档
- CGContextTranslateCTM,CGContextScaleCTM,CGContextRotateCTM详解
- HTML5获取地理经纬度并通过百度接口得到实时位置
- OC学习日记05-封装、继承和多态
- Bootstrap简单模板与基本表格
- Genealogical tree