OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3924|回复: 2

FreeRTOS的列表是有序还是无序的?头尾在哪里?

[复制链接]

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
发表于 2020-4-14 12:40:05 | 显示全部楼层 |阅读模式
5金钱

最近在看FreeRTOS的源码,看到list这里有些不解,向大家请教下:

1、list是有序还是无序的?
因为我看vListInsert是有序插入的,但是vListInsertEnd又是直接插入的,还是说,有的链表要要有序,有的链表只要插进去就行?

2、list的头尾在哪?
看到两种说法,一个就是list自己的end迷你列表项是尾巴。
还有一种就是pxIndex指的是头。
这两种哪种说的对?
初始化的时候pxIndex指的是xListEnd,以后pxIndex会变的,二者并不等价。

最佳答案

查看完整内容[请看2#楼]

1. 链表本身无序,所谓有序是人设计的按某值的权重等规则进行插入/读取/删除表项的操作。是不是有序的,那你就看这个列表有没有提供这种按规则操作列表的有序接口了。如果某列表设计时只提供有序接口,那它必然是有序列表,如果有序接口/无序接口都提供了,那么一个列表实体是有序还是无序靠用户维护。 2. pxIndex用来遍历列表的,xListEnd只不过标记罢了。 在有序列表中,xListEnd.pxNext指向的是头,xListEnd.pxPrevious指向 ...
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
743
金钱
743
注册时间
2018-9-1
在线时间
177 小时
发表于 2020-4-14 12:40:06 | 显示全部楼层
1.  链表本身无序,所谓有序是人设计的按某值的权重等规则进行插入/读取/删除表项的操作。是不是有序的,那你就看这个列表有没有提供这种按规则操作列表的有序接口了。如果某列表设计时只提供有序接口,那它必然是有序列表,如果有序接口/无序接口都提供了,那么一个列表实体是有序还是无序靠用户维护。
2. pxIndex用来遍历列表的,xListEnd只不过标记罢了。
在有序列表中,xListEnd.pxNext指向的是头,xListEnd.pxPrevious指向的是尾巴
无序列表中,具体到FreeRTOS中的轮询列表,它不标记逻辑头尾,因为vListInsertEnd()插入时并不是根据xListEnd,而是pxIndex
uevip#126.com
回复

使用道具 举报

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
 楼主| 发表于 2020-4-16 16:54:36 | 显示全部楼层
第一个问题解释应该是(个人理解):
有些是有序的,有些无序的。vListInsert插入的就是升序的,其他的只是表示一个集合,并不依靠顺序来做东西。这些插入会比较快。
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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