91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vxworks中Event是什么

發布時間:2021-12-22 10:26:41 來源:億速云 閱讀:235 作者:小新 欄目:互聯網科技

小編給大家分享一下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 <stdio.h>    /* printf() */#include <eventLib.h> /* eventReceive() */#include <semEvLib.h> /* semEvStart() */#include <msgQEvLib.h>/* 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是什么

以上是“vxworks中Event是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康平县| 富民县| 辛集市| 仙游县| 芦山县| 高要市| 汕尾市| 巢湖市| 阿荣旗| 凌云县| 广饶县| 汉阴县| 松溪县| 石渠县| 五原县| 滨州市| 毕节市| 当涂县| 竹溪县| 宣恩县| 龙州县| 聂荣县| 新闻| 东乡| 南皮县| 赤峰市| 沧源| 佛冈县| 沾化县| 合肥市| 通辽市| 保定市| 富宁县| 柳州市| 汶上县| 黑龙江省| 巴彦淖尔市| 介休市| 拜泉县| 任丘市| 双流县|