TimerSlice时间片轮询架构

具体源码我放在github上了

操作其实也跟MultiTimer一样,但是timeslice使用了双向链表,可以学习一下。
参考链接:
单片机面向对象思维的架构:时间轮片法-优快云博客
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构-优快云博客
Linux内核中双向链表的经典实现 - 如果天空不死 - 博客园 (cnblogs.com)

list.c

#include "list.h"

  

void list_init(ListObj* list)

{
   

    list->next = list->prev = list;

}

  

void list_insert_after(ListObj* list, ListObj* node)

{
   

    list->next->prev = node;

    node->next = list->next;

  

    list->next = node;

    node->prev = list;

}

  

void list_insert_before(ListObj* list, ListObj* node)

{
   

    list->prev->next = node;

    node->prev = list->prev;

  

    list->prev = node;

    node->next = list;

}

  

void list_remove(ListObj* node)

{
   

    node->next->prev = node->prev;

    node->prev->next = node->next;

  

    node->next = node->prev = node;

}

  

int list_isempty(const ListObj* list)

{
   

    return list->next == list;

}

  

unsigned int list_len(const ListObj* list)

{
   

    unsigned int len = 0;

    const ListObj* p = list;

    while (p->next != list)

    {
   

        p = p->next;

        len++;

    }

  

    return len;

}

list.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值