千家信息网

vxworks中Event是什么

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,小编给大家分享一下vxworks中Event是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Event是一种高效的任务
千家信息网最后更新 2025年02月05日vxworks中Event是什么

小编给大家分享一下vxworks中Event是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Event是一种高效的任务间同步机制,其实它还可以与某些资源同步(信号量与消息队列)。
使用xxEvStart()可以将当前任务注册到相应的资源上,当这个资源变为有效,且没有其它任务阻塞在这个资源上,系统就会给这个注册的任务发送Event。再结合Event的基本操作,就可以实现任务同时与多种资源的同步操作。
/* resource-related options */#define EVENTS_OPTIONS_NONE    0x00#define EVENTS_SEND_ONCE       0x01  /* unregister events after eventSend   */#define EVENTS_ALLOW_OVERWRITE 0x02  /* can overwrite previous registration */#define EVENTS_SEND_IF_FREE    0x04  /* send events in xxxEvStart()         */
STATUS semEvStart(SEM_ID semId, UINT32 events, UINT8 options);STATUS semEvStop (SEM_ID semId);
STATUS msgQEvStart(MSG_Q_ID msgQId, UINT32 events, UINT8 options);STATUS msgQEvStop (MSG_Q_ID msgQId);

看一个例子

/* Copyright 2020 VxWorks567 */#include     /* printf() */#include  /* eventReceive() */#include  /* semEvStart() */#include /* msgQEvStart() */
#define MSGS_NUM 5#define MSG_LEN 5
static SEM_ID semId;static MSG_Q_ID msgQId;
void testEvent(){ _Vx_event_t eventsReceived;
/* 用二进制信号量表示一种资源 */ semId = semBCreate(SEM_Q_FIFO, SEM_EMPTY); /* 将当前任务注册到该信号量 */ semEvStart(semId, VXEV01, EVENTS_OPTIONS_NONE);
/* 用消息队列表示一种资源 */ msgQId = msgQCreate(MSGS_NUM, MSG_LEN, MSG_Q_FIFO); /* 将当前任务注册到该消息队列 */ msgQEvStart(msgQId, VXEV02, EVENTS_OPTIONS_NONE);
while(1) { /* 任一资源有效时,即进行处理 */ eventReceive(VXEV01|VXEV02, EVENTS_WAIT_ANY, WAIT_FOREVER, &eventsReceived); if(eventsReceived&VXEV01) { /* 信号量有效,且无其它任务申请信号量 */ printf("\n\tsemphore is free\n"); semTake(semId, WAIT_FOREVER); } else if(eventsReceived&VXEV02) { /* 新消息达到,且无其它任务读取消息 */ printf("\n\tmsgQ is free\n"); msgQReceive(msgQId, NULL, 0, WAIT_FOREVER); } } }
void freeSem(){ /* 释放信号量,表示对应资源有效 */ semGive(semId); }
void freeMsgQ(){ /* 发送消息,表示对应资源有效 */ msgQSend(msgQId, 0, 0, 0, 0); }

执行效果

以上是"vxworks中Event是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

资源 任务 信号 消息 信号量 有效 篇文章 队列 同步 内容 不怎么 二进制 例子 同时 基本操作 多种 大部分 效果 更多 机制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南创新网络技术服务代理商 综合实例网络安全的重要性 服务器普通声卡能用吗 白湖监狱网络安全管理 网络安全公安部投资 湖南娱乐共建网络安全 上海邑焱网络技术有限公司 东北石油大学数据库机试 宁夏党员教育软件开发 莱芜机构养老软件开发 浙江运营软件开发价格 宝山区信息化软件开发定制介绍 php如何获取数据库数据 网络安全工程概念 网络技术推进政务公开 南京熵减网络技术有限公司 光明区网络技术转移好处 宁波无线网络技术服务价格 阿里云云服务器密码 美国网络安全概念股实时行情 怎么获取网页注册的数据库中 宇视电视墙服务器端口 白湖监狱网络安全管理 案里有名堂网络安全 计算机网络技术入门好的书籍 网络技术本身存在的漏洞 宝山区品质数据库服务商有哪些 某软件开发企业8月进购生产 关于网络安全方面的漫画手抄报 服务器怎么自动打开
0