?? quetest.c
字號:
/*
* ======== quetest.c ========
*/
#include <std.h>
#include <log.h>
#include <mem.h>
#include <que.h>
#include <sys.h>
#include "quetestcfg.h"
#define NUMMSGS 5 /* 消息的數目*/
typedef struct MsgObj {
QUE_Elem elem; /* 結構的第一個域是一個QUE_Elem類型*/
Char val; /* 這里將一個字母作為一個消息加入對列,故定義了一個字符型的變量*/
} MsgObj, *Msg; /* 定義了一個MsgObj結構體類型的變量MsgObj和指針Msg */
Void reader(); /* 用于將消息加入對列*/
Void writer(); /*用于將消息從對列中讀出*/
/*
* ======== main ========
*/
Void main()
{
/*
* writer()的調用必須在reader()之前,以確保讀任務執行之前對列不是空的
*/
writer();
reader();
}
/*
* ======== reader ========
*/
Void reader()
{
Msg msg;
Int i;
for (i=0; i < NUMMSGS; i++) {
/* 為確保隊列不為空首先調用QUE_empty進行檢驗 */
if (QUE_empty(&queue)) {
SYS_abort("queue error\n"); /*如果隊列為空系統會輸出一條錯誤信息"queue error"*/
}
msg = QUE_get(&queue); /*msg用于臨時存放從對列queue中讀出一條信息*/
/* 輸出每一條信息,這里是一個字母 */
LOG_printf(&trace, "read '%c'.", msg->val);
/* 釋放內存*/
MEM_free(0, msg, sizeof(MsgObj));
}
}
/*
* ======== writer ========
*/
Void writer()
{
Msg msg;
Int i;
for (i=0; i < NUMMSGS; i++) {
/* 分配內存,一次分配可以存放一條消息的內存空間*/
msg = MEM_alloc(0, sizeof(MsgObj), 0);
if (msg == MEM_ILLEGAL) {
SYS_abort("Memory allocation failed!\n");
}
/* 為每一條消息賦值 */
msg->val = i + 'a';
LOG_printf(&trace, "writing '%c' ...", msg->val);
/* 將消息加入隊列*/
QUE_put(&queue, msg);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -