昊男Henry 发表于 2022-4-3 16:59:22

DonkeyCar threaded配置解析

本帖最后由 昊男Henry 于 2022-4-3 21:45 编辑

DonkeyCar源码中,manage.py通过vehicle.py实现对不同功能组件的实例化。

本文以actuator.py为例,分析threaded=True对程序运行逻辑的影响。

【现象】

[*]threaded = true时,独立开辟的线程在update()中一直刷新,在每次大循环中调用一次run_threaded()
[*]threaded = false时,和其他线程组成队列,在每次大循环中调用一次run()







【结论】

[*]run_threaded()和update()为一组,功能上与run()等效
[*]update()为独立线程,实时性比run()要好,适合需要常驻的服务,例如串口接收。【实测update()每秒刷新200次以上,run()每秒只恒定刷新20次】

极凹甫 发表于 2022-4-6 20:46:46

run_threaded()和update()为一组,功能上与run()等效
update()为独立线程,实时性比run()要好,适合需要常驻的服务,例如串口接收。【实测update()每秒刷新200次以上,run()每秒只恒定刷新20次】

这一句非常有迷惑性哦

能否解释一下 什么样的part使用threaded,什么样不使用呢?

昊男Henry 发表于 2022-4-8 21:59:53

极凹甫 发表于 2022-4-6 20:46
这一句非常有迷惑性哦

能否解释一下 什么样的part使用threaded,什么样不使用呢?


没有绝对界定,区别在于是否为独立线程。需要高速响应的part建议配置threaded=True,例如Web显示实时画面。舵机PWM信号刷新只有50~60Hz,不必要配置threaded,减少系统资源占用。
页: [1]
查看完整版本: DonkeyCar threaded配置解析