最近一直在搞stm8l,发现用if else的流程来写程序,后面添加新功能以及维护起来超级费劲,于是上网看看有没有类似操作系统之类的东西,无奈stm8L资源不多,无法移植嵌入式操作系统,无意中就找到了protothread,发现很有趣,下面这段别人翻译的,感谢作者。
◆ protothread是专为资源有限的系统设计的一种耗费资源特别少并且不使用堆栈的线程模型,相比于嵌入式操作系统,其有如下优点:
1. 以纯C语言实现,无硬件依靠性; 因此不存在移植的困难。
2. 极少的资源需求,每个Protothread仅需要2个额外的字节;
3. 支持阻塞操纵且没有栈的切换。
它的缺陷在于:
1. 函数中不具备可重入型,不能使用局部变量;
2. 按顺序判断各任务条件是否满足,因此无优先级抢占;
3. 任务中的各条件也是按顺序判断的,因此要求任务中的条件必须是依次出现的。
◆ protothread的阻塞机制: 在每个条件判断前,先将当前地址保存到某个变量中,再判断条件是否成立,若条件成立,则往下
运行;若条件不成立,则返回。
protothreads的官方下载网址:http://dunkels.com/adam/pt/download.html