无等待地从邮箱中得到一个消息, OSMboxAccept()
来源:互联网 发布:简明python教程怎么样 编辑:程序博客网 时间:2024/05/12 01:39
- 应用程序也可以以无等待的方式从邮箱中得到消息。这可以通过程序清单 L6.17中的OSMboxAccept()函数来实现。OSMboxAccept()函数开始也是检查事件控制块是否是由OSMboxCreate()函数建立的 [L6.17(1)]。接着,它得到邮箱中的当前内容[L6.17(2)],并判断是否有消息是可用的[L6.17(3)]。如果邮箱中有消息,就把邮箱清空[L6.17(4)],而邮箱中原来指向消息的指针被返回给OSMboxAccept()的调用函数[L6.17(5)]。OSMboxAccept()函数的调用函数必须检查该返回值是否为NULL。如果该值是NULL,说明邮箱是空的,没有可用的消息。如果该值是非NULL值,说明邮箱中有消息可用,而且该调用函数已经得到了该消息。中断服务子程序在试图得到一个消息时,应该使用OSMboxAccept()函数,而不能使用OSMboxPend()函数。
- OSMboxAccept()函数的另一个用途是,用户可以用它来清空一个邮箱中现有的内容。程序清单 L6.17 无等待地从邮箱中得到消息
- void *OSMboxAccept (OS_EVENT *pevent)
- {
- void *msg;
- OS_ENTER_CRITICAL();
- if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { (1)
- OS_EXIT_CRITICAL();
- return ((void *)0);
- }
- msg = pevent->OSEventPtr; (2)
- if (msg != (void *)0) { (3)
- pevent->OSEventPtr = (void *)0; (4)
- }
- OS_EXIT_CRITICAL();
- return (msg); (5)
- }
0 0
- 无等待地从邮箱中得到一个消息, OSMboxAccept()
- 无等待地从邮箱中得到一个消息, OSMboxAccept()
- 无等待地从一个消息队列中取得消息, OSQAccept()
- 无等待地从一个消息队列中取得消息, OSQAccept()
- 等待一个邮箱中的消息,OSMboxPend()
- 发送一个消息到邮箱中,OSMboxPost()
- 发送一个消息到邮箱中,OSMboxPost()
- 发送一个消息到邮箱中,OSMboxPost()
- 从PACKET_IN消息中得到packet data
- 从原字符串中得到一个字符串
- 从一个Activity中得到结果
- 等待一个消息队列中的消息,OSQPend()
- ubuntu 中 邮箱消息通知
- 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer
- 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer
- 从等待中发现瓶颈
- 从COM中发送一个自定义消息给C#程序
- Java实现从一个数字中删除给定个数的数得到一个最大整数
- JAVA Swing JButton按钮的事件响应
- HDU2096 小明A+B
- 廖雪峰老师——Python进阶( 定制类 )
- 带参模糊查询
- BZOJ P2330[SCOI2011]糖果
- 无等待地从邮箱中得到一个消息, OSMboxAccept()
- PCIE M.2规格书之2.3.4 板卡PCB详解
- 中介者模式
- table表单
- 菜鸟篇之JSP,MyEclipse连接MySQL
- 环路上有N个加油站,每个加油站有汽油gas[i],从每个加油站到下一个消耗cost[i],求到从哪儿个加油站出发
- pthread优先级的实践与结果分析
- 基于Tensorflow的MNIST手写数字识别(三)
- uvm的随机化