经典数据结构
亦大乐谍
专注于嵌入式Soc和操作系统,坚持原创。
展开
-
高效软件定时器的设计
软件定时器在协议栈等很多场景都有广泛的应用,有时候会有大量的定时器同时处于工作状态,需要管理,它们的超时时间各异,要高效的保证每个定时器都能够较为准确的超时并执行到其回调函数并不是一件易事。本文分析嵌入式实时操作系统Nucleus的定时器方案,它巧妙的管理了一条按照相对时间来排序的双向链表,避免每次tick中断都要遍历链表检查超时和更新剩余时间,实现了一种相当高效的软件定时器。原创 2016-07-08 11:08:52 · 4997 阅读 · 3 评论 -
固定大小块的内存池设计
摘要在一些场景下,应用需要频繁的申请和释放一个或多个大小相同的内存(例如传输固定大小的数据块),这时候如果调用的是普通的malloc和free函数,效率就相对较低,且分配和释放的次数多,会容易导致内存碎片,增加系统对堆内存管理的负担。针对这一需求,Nucleus提供了一种非常高效的内存池方案,称为partition memory。它可以快速的提供给用户固定大小的内存,也避免了内存碎片的问题原创 2016-07-13 13:59:23 · 1432 阅读 · 0 评论