rtt消息队列delay问题

发布于 2014-12-29 18:09:48
我看用户手册中的例子,多个线程中使用消息队列,都使用了rt_thread_delay函数。
这个是为什么?使用延时会降低系统效率。

我认为用参数RT_WAITING_FOREVER,当没有消息的时候,线程都是挂起的,处理完一条消息之后继续挂起。

那么,类似下面的例子中rt thread delay(10);是否是必要的?

static void thread1 entry(void* parameter)
{
char buf[128];

while (1)
{
rt memset(&buf[0], 0, sizeof(buf));

/* 从消息队列中接收消息 */
if (rt mq recv(&mq, &buf[0], sizeof(buf), RT WAITING FOREVER) == RT EOK)
{
rt kprintf("thread1: recv msg from message queue, the content:%s
", buf);
}

/* 延迟10个OS Tick */
rt thread delay(10);
}
}

查看更多

关注者
0
被浏览
2.4k
4 个回答
grissiom
grissiom 2014-12-29
看应用逻辑上是否需要了。对于系统来讲没有必要性。
bernard
bernard 2014-12-29
这个地方仅仅是做一个demo,让这个线程稍微运行延迟些(因为不延时,可能会出现两个线程来回不停的执行,速度太快了)。
raulshao
raulshao 2015-01-04
@grissiom @berbard 谢谢两位老大解释

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友