比较freertos中的任务

问题描述 投票:0回答:1

我有一个(cpp)对象,该对象可以在多个任务之间共享,但是由单个任务拥有(当在TaskHandle_t ownerTask中创建对象时,将保存所有者任务句柄)。现在,当我运行该对象的某个函数时,我需要检查请求该函数执行的当前任务是否是所有者任务。

如何测试当前任务是否与已保存其句柄的任务相同?问题在于,在项目中将configuse_TRACE_FACILITY设置为0(并且应该是这样),因此TCB(句柄所指向的)没有成员uxTaskNumber。

由您自己在TCB中添加一个成员来跟踪任务号,例如taskID,然后在将任务添加到就绪列表中时进行设置,这是一个好主意吗?

embedded real-time microcontroller freertos
1个回答
0
投票

有一个xTaskGetCurrentTaskHandle()函数返回TaskHandle_t,这是我假设的所需内容。

但是,真正的问题是,为什么首先要拥有这样的功能。对我来说,这听起来像是您正在尝试创建某种您自己的资源所有权逻辑-为什么不使用互斥体?如果您的目标是不使用给定对象而不是最初创建该对象的任务,则可以在该对象中嵌入一个递归互斥对象(而不是任务句柄),然后获取互斥对象而不返回。然后,检查对象所有权的逻辑可以简单地尝试使用等待时间为0的互斥体。

© www.soinside.com 2019 - 2024. All rights reserved.