pt-thread的使用

1. pt-thread使用

官网:http://dunkels.com/adam/pt/index.html

1.1 使用示例

ptthread 有两种运行任务的方式,一种是switch,另一种是goto。这里使用的是switch,在lc.h文件中包含相应头文件即可。#include “lc-switch.h”

//PT_BEGIN(p);
{ 
    char PT_YIELD_FLAG = 1; 
    //LC_RESUME((pt)->lc)
    switch(p->lc) 
    { 
        case 0:;

//PT_YIELD(p);
        do 
        {						
            PT_YIELD_FLAG = 0;				
            //LC_SET((pt)->lc);
            p->lc = __LINE__; case __LINE__:				
            if(PT_YIELD_FLAG == 0) 
            {			
                return PT_YIELDED;			
            }						
        } while(0);

//PT_END(p);
    //LC_END((pt)->lc); 
    };
    PT_YIELD_FLAG = 0; 
    p->lc = 0;//PT_INIT(pt); 
    return PT_ENDED; 
}

1.2 代码解释

  • PT_BEGIN( p ); PT_YIELD( p ); PT_END( p );这三个宏是使用pt任务时最基础的3条语句,依次的意思是任务开始,任务挂起,任务结束。

  • PT_BEGIN( p ):开始运行,如果p->lc是0,则按顺序往下运行。如果p->lc不为0则跳到相应的case语句中运行(这种情况发生在上一次任务调用了PT_YIELD处于挂起状态)。

  • PT_YIELD( p ):将p->lc的值改为当前行数,退出当前任务(挂起任务)。下次进来任务就会直接跳到当前的case运行,往下运行代码(因为PT_YIELD_FLAG !=0 )。

  • PT_END( p ):首先是呼应PT_BEGIN( p )中的switch的大括号};;然后就清除相关变量等等,下一次任务就又是重头开始。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值