Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Kernel
线程主动让出再思考
发布于 2018-05-17 10:44:00 浏览:2276
订阅该版
今天在学习普通二值信号量会使得优先级翻转的过程中,感受到rt_thread_delay()与rt_thread_yield()的区别,也不知自己是否理解准确了?请大神指点。 程序中每个线程的优先级都不一样,某一个线程想要让出给别的线程执行机会,我开始在这个线程中用rt_thread_yield(),发现程序会永远在这个线程中运行不让出处理器;之后替换成rt_thread_delay(1),在串口终端可以看到这个线程确实让出机会给别的优先级任务执行机会了。 查阅了源码了解到rt_thread_yield()会将本线程移出就绪列表,随后立即又插入到本优先级对应的列表尾部!如果本优先级只有一个任务,那么即使执行rt_schedule,也是继续执行本线程而不会让出处理器,翻阅编程指南也有这样的描述“如果当前优先级只有这一个线程,则这个线程继续执行,不进行上下文切换动作”。指南中应该改成是执行切换动作了只不过切换回自己了?? 使用rt_thread_delay(1)会首先**挂起**本线程,开启线程定时器计时;在systick中断中判断这个定时器是否定时已经到了,如果到了就执行线程定时器回调函数( t->timeout_func(t->parameter);)去**解挂**和插入就绪列表参与调度。 因此如果没有同优先级的线程,那么使用系统延时是正确的让出线程方法!?不知道还有别的方法吗?
查看更多
4
个回答
默认排序
按发布时间排序
noerr
2018-05-17
这家伙很懒,什么也没写!
..........很少用延时吧 一般都是事件 信号量 邮箱 消息队列 互斥锁 等这些吧 或者 某些阻塞函数也可以
wen619
2018-05-17
这家伙很懒,什么也没写!
我这个是学习,所以通过delay来让出线程。等信号量如果等不到 也确实会让出线程,我刚才试了。
tanek
2018-05-17
这家伙很懒,什么也没写!
rt_thread_yield本身就是偏向底层的API,不推荐用户使用的。 rt_thread_delay用来让出cpu也不是最优解。 每个线程应该专注自己的事情,当需要其他资源的时候就被阻塞,等待别人唤醒。这是更合适的方式。不依赖具体的延时。适应性和实时性也更好。
wen619
2018-05-17
这家伙很懒,什么也没写!
“每个线程应该专注自己的事情,当需要其他资源的时候就被阻塞,等待别人唤醒。这是更合适的方式。不依赖具体的延时。适应性和实时性也更好。” 谢谢。等有实际项目了,我好好体会这句话。非常感谢。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.3k
关于作者
wen619
这家伙很懒,什么也没写!
提问
10
回答
27
被采纳
0
关注TA
发私信
相关问题
1
请教cpu使用率分析
2
选择FreeRTOS, 还是RT-Thread。
3
thread heap stack overflow ?
4
rtt消息队列delay问题
5
释放被删除线程的内存地方在哪里啊
6
请教:各线程结束后,释放其中的内存的连续性问题
7
STM32F103中断关于信号量、邮箱问题
8
RTT中的线程栈大小如何控制
9
关于线程由执行态变为挂起态的代码实现,,,
10
rt_malloc(rt_size_t size)内存分配函数最小分配尺寸问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
五分钟玩转RT-Thread新社区
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread BSP支持玄铁全系列RISC-V内核啦
2
ubuntu20搭建rtthead5.2.0开发环境
3
BitsButton嵌入式按键处理框架
4
art-pi2 上手记录(二)
5
VScode + EIDE + STM32cubeMX RT-Thread nano 移植教程MDK版+GCC版
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
Bootloader
AT
Hardfault
CAN总线
ART-Pi
FinSH
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
UART
cubemx
ESP8266
BSP
ota在线升级
WIZnet_W5500
PWM
packages_软件包
flash
freemodbus
潘多拉开发板_Pandora
GD32
ADC
keil_MDK
定时器
flashDB
编译报错
ulog
socket
rt_mq_消息队列_msg_queue
msh
中断
Debug
SFUD
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部