📄 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 + -