真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vxworks中Event是什么

小編給大家分享一下vxworks中Event是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

走過10多年,我們已為眾多企業(yè)及政府機(jī)關(guān)提供專業(yè)的互聯(lián)網(wǎng)服務(wù)。我們不只是一家專業(yè)網(wǎng)站制作公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,創(chuàng)新互聯(lián)公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!創(chuàng)新互聯(lián)公司經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。

Event是一種高效的任務(wù)間同步機(jī)制,其實(shí)它還可以與某些資源同步(信號量與消息隊(duì)列)。
使用xxEvStart()可以將當(dāng)前任務(wù)注冊到相應(yīng)的資源上,當(dāng)這個(gè)資源變?yōu)橛行?,且沒有其它任務(wù)阻塞在這個(gè)資源上,系統(tǒng)就會(huì)給這個(gè)注冊的任務(wù)發(fā)送Event。再結(jié)合Event的基本操作,就可以實(shí)現(xiàn)任務(wù)同時(shí)與多種資源的同步操作。  
/* 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);

看一個(gè)例子

/* 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;
   /* 用二進(jìn)制信號量表示一種資源 */    semId = semBCreate(SEM_Q_FIFO, SEM_EMPTY);    /* 將當(dāng)前任務(wù)注冊到該信號量 */    semEvStart(semId, VXEV01, EVENTS_OPTIONS_NONE);
   /* 用消息隊(duì)列表示一種資源 */    msgQId = msgQCreate(MSGS_NUM, MSG_LEN, MSG_Q_FIFO);    /* 將當(dāng)前任務(wù)注冊到該消息隊(duì)列 */    msgQEvStart(msgQId, VXEV02, EVENTS_OPTIONS_NONE);
   while(1)        {        /* 任一資源有效時(shí),即進(jìn)行處理 */        eventReceive(VXEV01|VXEV02, EVENTS_WAIT_ANY, WAIT_FOREVER, &eventsReceived);        if(eventsReceived&VXEV01)            {            /* 信號量有效,且無其它任務(wù)申請信號量 */            printf("\n\tsemphore is free\n");            semTake(semId, WAIT_FOREVER);            }        else if(eventsReceived&VXEV02)            {            /* 新消息達(dá)到,且無其它任務(wù)讀取消息 */            printf("\n\tmsgQ is free\n");            msgQReceive(msgQId, NULL, 0, WAIT_FOREVER);            }        }    }
void freeSem(){    /* 釋放信號量,表示對應(yīng)資源有效 */    semGive(semId);    }
void freeMsgQ(){    /* 發(fā)送消息,表示對應(yīng)資源有效 */    msgQSend(msgQId, 0, 0, 0, 0);    }

執(zhí)行效果

vxworks中Event是什么

以上是“vxworks中Event是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文名稱:vxworks中Event是什么
網(wǎng)頁URL:http://weahome.cn/article/ggegpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部