Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
idle空闲线程
空闲线程中的线程清理函数cleanup的作用是什么?
发布于 2024-10-10 15:47:20 浏览:279
订阅该版
研究空闲线程的时候,看到 `rt_defunct_execute(void)` 函数中有一个 `cleanup` 函数,想看看这个函数进行了什么操作,但是没有在源码中找到 `cleanup` 函数的函数体。 ```c /* idle.c */ static void rt_defunct_execute(void) { while (1) { rt_thread_t thread; rt_bool_t object_is_systemobject; void (*cleanup)(struct rt_thread *tid); ...... cleanup = thread->cleanup; object_is_systemobject = rt_object_is_systemobject((rt_object_t)thread); if (object_is_systemobject == RT_TRUE) { rt_object_detach((rt_object_t)thread); } if (cleanup != RT_NULL) { cleanup(thread); } if (object_is_systemobject == RT_FALSE) { RT_KERNEL_FREE(thread->stack_addr); rt_object_delete((rt_object_t)thread); } } } ``` 只在 `rt_thread` 结构体中看到定义了函数指针 `cleanup` ```c /* rtdef.h */ struct rt_thread { ...... void (*cleanup)(struct rt_thread *tid); /**< cleanup function when thread exit */ ...... }; typedef struct rt_thread *rt_thread_t; ``` 然后在 `_thread_init()` 函数中初始化 `cleanup` 函数为0 ```c /* thread.c */ static rt_err_t _thread_init(......) { ...... /* initialize cleanup function and user data */ thread->cleanup = 0; ...... } ``` 我的想法是 `cleanup` 函数应该是可以由用户定义操作的回调函数,如果用户自定义了线程清理函数,可以在 `_thread_init()` 函数中将函数指针 `thread->cleanup` 指向用户自定义的清理函数。不知道我的理解对不对,请大佬指点指点。
查看更多
Milo
2024-10-15
这家伙很懒,什么也没写!
你的理解是对的,但是有一点需要注意,这个cleanup不建议在应用层面去控制,而是应该由组件或者框架等中间件去控制,比如lwp,posix等都会用到
2
个回答
默认排序
按发布时间排序
a1012112796
2024-10-15
这家伙很懒,什么也没写!
看起来应该是这样的,但它和 `user_data` 类似,并没对应的接口函数去设置这个值。所以也不是很推荐在应用代码中使用。
撰写答案
登录
注册新账号
关注者
0
被浏览
279
关于作者
Metophar
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
空闲线程调用LED闪烁钩子函数
2
程序跑飞了,msh发命令进不了shell 大循环,一直在idle里
3
RT-Thread Nano 支持CPU使用率计算吗?
4
SCB_CFSR_UFSR:0x02_INVSTATE
5
IDLE 线程总是显示超时状态,是什么原因?
6
idle线程资源回收
7
MSH运行hwtimer_test后把idle线程kill了?
8
idle线程中的rt_free
9
为什么RTT中空闲线程永远不能被挂起?
10
NANO3.15 无法进入空闲线程钩子函数【已解决】
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RTT串口查找函数使用过程中遇到的问题。
2
RT-Thread CI编译产物artifacts自动上传功能介绍
3
STM32G030移植RT-Thread
4
CubeMX & RT-Thread Studio 联合开发说明
5
RT-Thread项目助手v0.3 | Ubuntu与MacOS平台的RT-Thread Env
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
I2C_IIC
cubemx
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
ulog
msh
C++_cpp
MicroPython
本月问答贡献
出出啊
1522
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
815
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部