HWM13
HWM13

注册于 3 months ago

回答
2
文章
0
关注者
0

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

更正以上对话的1个问题:FreeRtos使用互斥信号量不存在优先级翻转问题,因为尝试访问互斥信号量失败的线程是根据线程优先级大小挂载在事件链表上面的。

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 Rt-thread 创建互斥量使用Flag 使用RT_IPC_FLAG_PRIO 就不会有问题。但FreeRtos会存在你描述的问题(优先级翻转)。首先,A线程得到互斥锁,B,C尝试获取

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 你说的第二种情况:FreeRtos里面的互斥信号量在B线程超时后会进行A线程优先级恢复操作,如果存在C线程之前尝试访问互斥信号量,则当B线程超时后,此时A线程将继承C线程的优先级,否则恢

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 你说的第一种情况,线程A释放掉互斥信号量之后就应该恢复到初始优先级

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 你说的第一种情况:A线程(优先级20),B线程(优先级1),C线程(优先级10),A线程先获取互斥信号量,B和C尝试获取该信号量失败,A线程当前优先级为1(继承B线程优先级)。当A释放掉

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 首先第一种情况:

HWM13 发表了评论

2 months ago

动态内存堆 保护全局变量lfree,为什么用信号量而不是互斥信号量

@我夏了夏天 你好,互斥量的实现目前在一些复杂情况下仍然有一些异常行为,可以举个例子吗,我仿真一下。我个人认为,信号量主要是用于线程间同步,保护全局变量用互斥信号量。当然,就算用信号量保护全局变量造成

HWM13 对问题发布了答案

2 months ago

这样使用UART接收一帧数据的方法是否可行

如果是支持RTOS,基本会有1个接收线程,这个接收线程主要是解析1个完整的数据帧(根据协议解析得到),如果得到数据帧则进行邮件发送。如果没有解析到完整的数据帧,接收线程周期性进行解析。

HWM13 发表了评论

2 months ago

RT-Thread 目前有计划增加统计所有线程CPU使用率功能吗

你好,cpuusage.c只能计算空闲任务占CPU使用率或者非空闲所有任务占CPU的使用率,不能计算每个任务占CPU使用率。实现这个功能应该是在任务调度函数进行统计。不过还是感谢你的回答,至少知道这个

HWM13 发表了评论

2 months ago

rt_schedule()函数里面,线程处于运行状态,为什么还要从就绪链表移除

重复移除当前线程从就绪链表对代码运行不会有影响,Rtt-Nano版本没有重复移除操作

HWM13 发表了评论

2 months ago

软件定时器的定时器问题

@EEZK_1546 你在把自己写的代码一点点往官方demo移植,这样可以查到自己哪部分代码造成问题。

发布
问题