
你可以理解为,A在开启B以后,A和B就是两个独立的线程了,访问同一个变量存在不同步的风险,那么显然如果有需要,是要在访问这个变量的方法中加锁的一般来说一个设备只有一个显示屏,所以,即便是多线程情况也要加锁同步线程。先不考虑LVGL,CPU/单片机等只通过一条总线(SPI,8080等)驱动显示器,所以即便只考虑硬件总线也是不允许多线程并行的。因为只有一个总线,连线程切换也是不允许的,当上个线程正在通过总线给屏幕传输数据时,突然发生线程切换,换另一个线程打断传输过程,并传输自己的数据,此时屏幕上显示内容肯定会出问题。
回到LVGL,大量使用static或全局变量,是为了保证对象指针你还能找到,,,而且LVGL渲染是单线程的,虽然你可以通过多线程修改某几个对象,但是你只是修改了整个对象树的内存结构,LVGL要到下一个周期才会去渲染你改好的对象树,而且运行LVGL事件的只是一个线程,所以渲染过程是单线程的。
LVGL要维持一个线程(任务)和一个周期时钟来触发和处理各种事件,哪怕单片机中也一样
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)