硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1575|回复: 1
收起左侧

[CMSIS-RTOS] 高速线程同步低速线程有啥好办法?

[复制链接]

2

主题

1

回帖

7

积分

新手上路

积分
7
发表于 2020-1-2 15:12:54 | 显示全部楼层 |阅读模式
各位新年好!请教问题如下:
TaskA在特定情况下需要频繁唤醒TaskB告警,TaskB是低速运行的设备(LED闪烁),TaskA频繁的进行osThreadFlagsSet会有啥不良影响?
总感觉这样做不太好,各位有啥“高速线程同步低速线程”的好办法呢?谢谢~!

代码如下:
void TaskA (void *argument)
{
    static uint32_t  flags;

    while(1)
   {
       // Alarm generating ...

       if(g_Alarm)
        {
            flags = osThreadFlagsSet(ThreadIdTaskB, 1);
        }

        osDelay(10);   

    }

}

void TaskB (void *argument)
{
    static uint32_t  flags;

    while(1)
   {
        flags = osThreadFlagsWait(1, osFlagsWaitAny, osWaitForever);

       LED(1);
       osDelay(500);   
       LED(0);
       osDelay(500);   

    }

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2020-1-2 15:26:08 | 显示全部楼层
使用事件标志的话,如果消息发的比较频繁会遗漏消息,即上次的还没有处理就又来新的了。

可以采用消息队列,但消息队列也有满的时候,此时就需要检测消息队列是否满了,满了就不可以再发了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 23:37 , Processed in 0.157626 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表