首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏裸机思维

    今天你要来点 protoThread么?

    今天穿插一篇底软文章,“【硬件篇】VCU软件接口原理”尚未更新完,预计会在10篇以上,大家可以继续保持关注。本文介绍一种事件驱动模型“protothreads”,由瑞典SICS的Adam Dunkels开发,也是Contiki OS中的源代码,此模型适合应用于资源受限的嵌入式系统中,当然我也曾用于某项目的开发中,受益匪浅,独乐乐不如众乐乐,今天分享给大家,所讲细节不一定面面俱到,不足之处还请指教。

    2.2K40发布于 2020-09-29
  • 来自专栏源码阅读

    协程-无栈协程(下)

    无栈协程库——protothread ProtoThread源码如下所示: #define LC_INIT(s) s = 0; #define LC_RESUME(s) switch(s) { case 实例的结构体,每一个无栈协程用这个结构体进行描述 struct pt { lc_t lc; }; /** 初始化一个protothread实例,无栈协程实例,核心就是将指令标签设置为0 */ #define PT_INIT(pt) LC_INIT((pt)->lc) /** * 这里用于定义一个protothread实例的接口,name_args是一个包含函数名和形参列表的字符串 * 且这个接口的返回值得是char型 */ #define PT_THREAD(name_args) char name_args /** * 用于定义一个protothread的起始执行位置,其实就是在 通过PT_THREAD封装协程执行接口 ·ProtoThread调用PT_WAIT_UNTIL阻塞,直到condition为true。

    1.2K20编辑于 2023-03-09
  • 来自专栏源码阅读

    有栈协程和无栈协程

    虽然我们可以对上述进行优化和封装,但是在这我们并不准备过多赘述,后面我们则直接看一个开源的无栈协程库-protothread 无栈协程库——protothread ProtoThread源码如图所示: 实例的结构体,每一个无栈协程用这个结构体进行描述 struct pt { lc_t lc; }; /** 初始化一个protothread实例,无栈协程实例,核心就是将指令标签设置为0 */ #define PT_INIT(pt) LC_INIT((pt)->lc) /** * 这里用于定义一个protothread实例的接口,name_args是一个包含函数名和形参列表的字符串 (cond)) { \ return PT_YIELDED; \ } \ } while(0) 如上述代码段所示: protothread使用结构体struct pt 来说: 对于无栈协程来说,因为不存在指针等信息,所以无栈协程的所有信息是可以缓存在共享内存的,因此进程可以通过共享内存在重启的环境下,也不会导致协程中断 但是这种恢复也是有条件的,在protothread

    6.6K43发布于 2021-10-13
  • 来自专栏全栈程序员必看

    声源定位「建议收藏」

    Update_new_peak_value(); } } } //线程等待按钮按下来记录和调用 //交叉关联和计算方向 static PT_THREAD(protothread_computation and display direction compute_direction(); } PT_END(pt); } //这个线程更新并维护按钮的状态 static PT_THREAD(protothread_button tft_config(); // round-robin scheduler for threads while (1) { PT_SCHEDULE(protothread_button ( & pt_button)); PT_SCHEDULE(protothread_computation( & pt_computation)); } } 五.结果 声音定位效果很好

    2.5K10编辑于 2022-08-02
  • 来自专栏TencentOS-tiny

    【编译器玄学研究报告】第二期——break

    我觉得我要手动@一下所有使用protoThread和所有使用switch状态机的童鞋们,就问你们慌不慌。 【玄学说法】“状态机好像容易跑飞……我也不知道是怎么回事,代码逻辑没问题啊?”

    52210发布于 2020-07-16
  • 来自专栏源码阅读

    无栈协程(上)

    虽然我们可以对上述进行优化和封装,但是在这我们并不准备过多赘述,后面我们则直接看一个开源的无栈协程库-protothread     未完待续...

    90340编辑于 2023-03-09
领券