线程的执行问题

发表在 Kernel2019-11-8 17:01 [复制链接] 5 270

比如有3个线程分布如下
$ d* ]7 h9 I: b' {, [: A线程     线程优先级     执行时间ms        堵塞时间ms
( i1 s: P) V: _# r! [1                1                     10                      1
: s% t4 R' z- t  J0 W' Z2                2                      5                       1
, r5 V2 d' e1 K, M9 P. d3                3                      3                       1; w' L0 j2 w2 t# z8 R" R  H
如果这样的话,是不是线程3永远不会被执行到?3 m; w9 K! v3 f5 a6 c3 O7 G$ ]/ C
" m+ y3 B* f3 N9 I0 _. q
8 E: C% h+ B6 Z" J6 R
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-11-9 09:16:58 | 显示全部楼层
不会啊,当你线程1 和线程2 都切走的时候,线程3 就可以得到执行了
使用道具 举报 回复
发表于 2019-11-9 09:28:41 | 显示全部楼层
线程 3 应该不会被执行到。1 y0 m) h7 |  h  b/ d8 K* w

: Q* r0 k( L+ W) ?" {线程 1 执行到第五次时,让出 CPU,线程 2 运行 1 ms 的时间。此时线程 2 的任务执行完,线程 2 让出 CPU 。
" U2 _& m' e. k; Q线程 2 让出 CPU 后,刚好线程 1 阻塞 1ms 的时间到了,切换至线程 1 继续运行。
使用道具 举报 回复
发表于 2019-11-9 09:40:10 | 显示全部楼层
解决办法是提高CPU主频,缩短执行时间。
使用道具 举报 回复
发表于 2020-3-6 20:14:38 | 显示全部楼层
aozima 发表于 2019-11-9 09:40
2 }) {( a- M! f解决办法是提高CPU主频,缩短执行时间。

! y1 H( P* [& {$ s' w& ~1 ~提高CPU主频有什么好处?  
  {+ m/ g- K0 ^/ P& d
% G0 _( R  W9 a; c7 l& c$ }1 ~线程多有利于各个模块解耦,如果因为高优先级抢占 低优先级线程会无法获取运行机会,主频提高是如何解决低优先级占据CPU导致其他线程无法运行的问题?5 i' I" O) t3 _" P

& t$ R  r; `- o" c$ ^# x作为抢占式实时系统 是不是楼主这种假设本身就有问题?  优先级应当相对运行时间成反比比较合适?  优先级越高 则该任务执行花费时间应当越小?
* }6 e; s# B1 Z% N/ \) G
使用道具 举报 回复
发表于 2020-3-8 22:36:03 | 显示全部楼层
楼主这是进入了误区。高优先级阻塞时间设计得这么小,低等级的线程怎么执行?还有高优先级的线程真的要执行10ms吗?如果运算力相对提高了,就不用执行这么长了,提前执行完就可以让出线程。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 2 主题
  2. 32 帖子
  3. 32 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表