protothread学习

本文介绍了一种适用于资源受限系统的线程模型——Protothread。该模型采用纯C语言编写,具有极少的资源需求,并支持阻塞操作而无需栈切换。文章详细解释了其工作原理、基本源码及实例,同时指出了其局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     ◆ protothread是专为资源有限的系统设计的一种耗费资源特别少并且不使用堆栈的线程模型,相比于嵌入式操作系统,其有如下优点:

      1. 以纯C语言实现,无硬件依靠性; 因此不存在移植的困难。

      2. 极少的资源需求,每个Protothread仅需要2个额外的字节;

      3. 支持阻塞操纵且没有栈的切换。

      ◆它的缺陷在于:

      1. 函数中不具备可重入型,不能使用局部变量;

      2. 按顺序判断各任务条件是否满足,因此无优先级抢占;

      3. 任务中的各条件也是按顺序判断的,因此要求任务中的条件必须是依次出现的。

      ◆ protothread的阻塞机制: 在每个条件判断前,先将当前地址保存到某个变量中,再判断条件是否成立,若条件成立,则往下

          运行;若条件不成立,则返回。

      ◆ protothread基本源码及注释:

        

     

       ◆ 实例及展开源码:

         应用实例:

          

        线程1,2的展开式:

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值