目录
-
- 七、任务通知
-
- [7.1 基本概念](#7.1 基本概念)
- [7.2 发出通知](#7.2 发出通知)
- [7.3 等待通知](#7.3 等待通知)
- [7.4 实例](#7.4 实例)
七、任务通知
该部分在上份代码基础上修改得来,代码下载链接:
https://wwzr.lanzout.com/i4Efu1la39wh
密码:cbvx
该代码尽量做到最简,不添加多余的、不规范的代码。
内容主要包括:
- 任务通知的基本概念、发出通知、等待通知
最终实现效果:
- 任务1先运行,运行一会儿使用任务通知通知任务2开始运行。
7.1 基本概念
任务通知是一种轻量级的同步机制,用于在任务之间进行通信和同步。任务通知是由二进制信号量和事件组实现的,提供了更简单和更高效的方式来实现任务间的同步。
使用场景:
- 轻量级任务同步 : 任务通知可以用于触发其他任务的执行。一个任务执行完某个特定操作后,通过
xTaskNotifyGive
发送通知,从而唤醒等待通知的任务。
7.2 发出通知
使用 xTaskNotifyGive
函数向任务发送通知。
C
//发送任务通知
xTaskNotifyGive(xTask);
// xTask :任务句柄
这将向指定任务发送一个通知。
7.3 等待通知
使用 ulTaskNotifyTake
函数等待接收任务通知。
C
ulTaskNotifyTake( BaseType_t xClearCountOnExit, TickType_t xTicksToWait );
// xClearCountOnExit 函数返回前是否清零: pdTRUE:把通知值清零 pdFALSE:如果通知值大于0,则把通知值减一
// xTicksToWait 等待通知时间, 0:不等待,即刻返回; portMAX_DELAY:一直等待
示例:
C
// 等待任务通知
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
7.4 实例
任务1发出通知,任务2等待通知