linux 消息队列同步例子,linux 消息队列例子

/author:DriverMonkey

//phone:13410905075

//mail:bookworepeng@Hotmail.com

//qq:196568501

#include

#include

#include

#include

#include

#include

#include

#define MAX_SEND_SIZE 80

#define RETURN_MSG_TYPE 0XAA

#define SEND_MSG_TYPE 0X55

using namespace std;

struct mymsgbuf {

long mtype;

char mtext[MAX_SEND_SIZE];

};

static void *thread_GUI(void *arg);

static void *thread_logic(void *arg);

static int init_message(unsigned char key);

static void send_message(int qid,

struct mymsgbuf *qbuf,

long type,

const void *text,

int size);

static int read_message(int qid, struct mymsgbuf *qbuf, long type);

static void remove_queue(int qid);

static int message_id = 0;

int main ()

{

pthread_t thread_GUI_id = 0;

pthread_t thread_logic_id = 0;

message_id = init_message('g');

pthread_create (&thread_GUI_id, NULL, &thread_GUI, NULL);

pthread_create (&thread_logic_id, NULL, &thread_logic, NULL);

pthread_join (thread_GUI_id, NULL);

pthread_join (thread_logic_id, NULL);

return 0;

}

static void *thread_GUI(void *arg)

{

int sleep_count = 0;

mymsgbuf send_buf;

sleep_count = 10;

char send_v = 0;

while(sleep_count--)

{

send_v++;

send_message(message_id, &send_buf , SEND_MSG_TYPE, &send_v,sizeof(send_v));

//cout<

//sleep(1);

}

}

static void *thread_logic(void *arg)

{

int sleep_count = 0;

mymsgbuf recive_buf;

sleep_count = 10;

while(sleep_count--)

{

//cout<

read_message(message_id,&recive_buf, SEND_MSG_TYPE);

//sleep(1);

}

}

int init_message(unsigned char key)

{

int id = 0;

key = ftok(".", key);

id = msgget(key, IPC_CREAT|0777);

if(id == (-1))

while(1);// should never in

return id;

}

void send_message(int qid,

struct mymsgbuf *qbuf,

long type,

const void *text,

int size)

{

qbuf->mtype = type;

memcpy(qbuf->mtext, text,size);

cout<mtext[0]<

if((msgsnd(qid, (struct msgbuf *)qbuf,size,NULL) == -1))

while(1);//shoud never in

qbuf->mtype = type;

msgrcv(qid, (struct msgbuf *)qbuf, MAX_SEND_SIZE, RETURN_MSG_TYPE, 0);

cout<mtext[0]<

cout<mtext<

}

int read_message(int qid, struct mymsgbuf *qbuf, long type)

{

int read_size = 0;

static int temp = 100;

qbuf->mtype = type;

temp++;

read_size = msgrcv(qid, (struct msgbuf *)qbuf, MAX_SEND_SIZE, type, 0);

cout<mtext[0]<

char const *return_message = "message_ok";

strcpy(qbuf->mtext, return_message);

qbuf->mtext[0] = temp++;

qbuf->mtype = RETURN_MSG_TYPE;

msgsnd(qid, (struct msgbuf *)qbuf,strlen(return_message)+1,NULL);

cout<mtext[0]<

}

void remove_queue(int qid)

{

}

linux消息队列编程实例

转自:linux 消息队列实例 前言: 消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权 ...

LINUX消息队列实战之一

前言 能说能抄能论皆不算,能写能打才是真功夫. 唠叨 反正我也是一个孤独的程序猿,多说一些奇奇怪怪的唠叨也无妨,第一次写消息队列,书本的东西和实战很不同,根据实战总结的一些注意事项会和大家分享,也敲打 ...

linux 消息队列的限制

消息队列的系统限制 作者:冯老师,华清远见嵌入式学院讲师. 消息队列是System V的IPC对象的一种,用于进程间通信,会受到系统的限制,本文主要描述了三个限制.第一:议个消息的最大长度:第二:消息 ...

linux 消息队列

消息队列,这个可是鼎鼎大名,经常在某些地方看见大家那个膜拜,那个,嗯,那个... 那就给个完整的例子,大家欣赏就行,我一直认为不用那个,嗯@ 这个队列的最大作用就是进程间通信,你要非搞个持久化,那也行 ...

linux消息队列通信

IPC机制 进程间通信机制(Inter Process Communication,IPC),这些IPC机制的存在使UNIX在进程通信领域手段相当丰富,也使得程序员在开发一个由多个进程协作的任务组成的 ...

Linux消息队列应用

#include"sys/types.h" #include "sys/msg.h" #include "unistd.h" #includ ...

linux消息队列操作

对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以 ...

linux消息队列的使用

消息队列 *消息队列是内核地址空间中的内部链表,通过内核在各个进程之间传递的内容.消息顺序发送到消息队列中,每个消息队列都有IPC标识符唯一地进行标识. msgbuf结构 struct msgbuf{ ...

Linux消息队列

#include #include #include #include

随机推荐

SQL Server 内置函数、临时对象、流程控制

SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

android - startActivity浅谈

当执行startActivity(Intent intent, Bundle options)函数的时候,应用程序不是直接呼叫另外一个Activity,而是将intent传进Android框架中.An ...

HDU 2048 号码塔&lpar;DP&rpar;

号码塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

LCS问题(最长公共子序列)-动态规划实现

问题描述: 问题] 求两字符序列的最长公共字符子序列 注意: 并不要求子串(字符串一)的字符必须连续出现在字符串二中. 思路分析: 最优子结构和重叠子问题的性质都具有,所以要采取动态规划的算法 最长公 ...

Mac- appium 环境配置

一: 下载    appium : https://bitbucket.org/appium/appium.app/downloads/ 下载安装完,打开appium,安全性与隐私设置  检测提示: ...

UFLDL 教程学习笔记(二)反向传导算法

UFLDL(Unsupervised Feature Learning and Deep Learning)Tutorial 是由 Stanford 大学的 Andrew Ng 教授及其团队编写的一套 ...

zuul简单使用

zuul路由的几个配置参数1.静态路由 zuul: routes: myroute1: path: /mypath/** url: http://localhost:8080 (注意这里url要htt ...

&lbrack;Umbraco&rsqb; 入门教程&lpar;转&rpar;

如在页面上显示Helloword. 设计:在umbraco里,最基础的一个概念是文档类型(document type),每个文档其实可以看成一个页面类型.比如我们要创建的两个页面,每个页面都需要显示自 ...

postgres备份数据库

1. psql --help psql is the PostgreSQL interactive terminal. Usage: psql [OPTION]... [DBNAME [USERNAM ...

AutoComplete的使用方法

百度 酷狗,反正使用搜索功能时,都会看到类似于图一这种自动补全的功能,灰常的方便,今天做一个项目,刚好要加这个功能,于是一通百度之后,总算做出来,源代码在文章末尾会提供下载.还有,我这个是参考了网上的 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值