前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Utility之循环链表

Utility之循环链表

作者头像
Taishan3721
发布2019-12-02 19:50:11
4560
发布2019-12-02 19:50:11
举报
文章被收录于专栏:这里只有VxWorks

今天看一下循环链表

VxWorks称之为Ring Buffer,看来也可以叫环形缓冲

双向链表一样:这个结构内部没有同步或互斥机制。多任务访问同一链表时,要注意互斥保护,例如使用"互斥信号量"。

VxWorks封装了以下函数

写个例子,把它们挨个调用一遍

如果表内已经满了,没有空位了,再次写入会怎么样

可以看到,这个链表内的空间是循环使用的:链表满了以后,读出旧数据,就可以写入新数据,只要读的够快,就可以一直写入。很多数据管理系统会用到这种思想,而且做了改进。例如公众号VxWorks567的行车记录仪,当SD卡满了的时候,不用读出已有录像,也可以写入新录像,这样方便了用户的操作,但无法保证数据的完整有效。

还有一点,与双向链表不太一样:VxWorks这个循环链表内部有两个指针:一个读,一个写。单核模式下,它俩互不干扰。所以只有两个分别进行读写的任务时,是不用加互斥保护的

这正是:

基本结构环形表,循环使用空间小。

一读一写不干扰,管理数据很巧妙。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档