RTT对于无法互相抢占的线程该如何处理

发布于 2020-03-16 22:26:44    浏览:374
各位大神。我是新手小白,我在用裸机程序加入RTT的过程中,遇到这样一个问题。我目前裸机运行了三个线程。一个线程A运行时间是十几毫秒,要求实时响应指标是20ms。另外两个线程B和C,它们的运行时间长度是几百毫秒和几十毫秒。在裸机状态下,当执行B和C线程时线程A是不工作,要等待B、C处理完。这就造成了遗漏处理数据的情况。现在想加入RTT,这几个线程我该如何处理。因为B和C运行时间都要大于A,所以我该怎么为每个线程设置阻塞呢,能使B、C程序执行的时候A也能得到20ms的实时相应?:'(

查看更多

8 个回答
aozima
aozima 2020-03-17
拒绝白嫖,拒绝键盘侠!
A的优先级大于B和C即可。
aozima
aozima 2020-03-17
拒绝白嫖,拒绝键盘侠!
我比较好奇的是,楼主用裸机,是怎样运行三个线程。
DQXG_3150
DQXG_3150 2020-03-17
This guy hasn't written anything yet
aozima 发表于 2020-3-17 10:29
我比较好奇的是,楼主用裸机,是怎样运行三个线程。


就是放在While(1)循环的;P任务A在最开头,然后顺序下来是B、C
DQXG_3150
DQXG_3150 2020-03-17
This guy hasn't written anything yet
aozima 发表于 2020-3-17 10:26
A的优先级大于B和C即可。


版主大大,那B、C任务里面没有DELAY语句,无法进入阻塞,一进入运行,就需要从头运行到尾,无法打断怎么办啊:Q
DQXG_3150
DQXG_3150 2020-03-17
This guy hasn't written anything yet
aozima 发表于 2020-3-17 10:29
我比较好奇的是,楼主用裸机,是怎样运行三个线程。


RTT.png
踩姑娘的小蘑菇
This guy hasn't written anything yet
DQXG_3150 发表于 2020-3-17 18:52
版主大大,那B、C任务里面没有DELAY语句,无法进入阻塞,一进入运行,就需要从头运行到尾,无法打断怎么 ...


首先,rtthread的线程是全抢占的,高优先级线程可以直接打断低优先级线程的运行
然后我比较好奇什么任务不用延时函数需要跑几百ms.....
DQXG_3150
DQXG_3150 2020-03-17
This guy hasn't written anything yet
踩姑娘的小蘑菇 发表于 2020-3-17 19:47
首先,rtthread的线程是全抢占的,高优先级线程可以直接打断低优先级线程的运行
然后我比较好奇什么任务 ...


明白了。谢谢大神指点
DQXG_3150
DQXG_3150 2020-03-17
This guy hasn't written anything yet
踩姑娘的小蘑菇 发表于 2020-3-17 19:47
首先,rtthread的线程是全抢占的,高优先级线程可以直接打断低优先级线程的运行
然后我比较好奇什么任务 ...


串口轮训发送数据、FLASH页擦除这些。。

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
374

发布
问题

分享
好友

手机
浏览

扫码手机浏览