◆ protothread是专为资源有限的系统设计的一种耗费资源特别少并且不使用堆栈的线程模型,相比于嵌入式操作系统,其有如下优点:
1. 以纯C语言实现,无硬件依靠性; 因此不存在移植的困难。
2. 极少的资源需求,每个Protothread仅需要2个额外的字节;
3. 支持阻塞操纵且没有栈的切换。
◆它的缺陷在于:
1. 函数中不具备可重入型,不能使用局部变量;
2. 按顺序判断各任务条件是否满足,因此无优先级抢占;
3. 任务中的各条件也是按顺序判断的,因此要求任务中的条件必须是依次出现的。
◆ protothread的阻塞机制: 在每个条件判断前,先将当前地址保存到某个变量中,再判断条件是否成立,若条件成立,则往下
运行;若条件不成立,则返回。
◆ protothread基本源码及注释:
◆ 实例及展开源码:
应用实例:
线程1,2的展开式: