汽车可以做哪些广告视频网站官方网站想反应问题不弄应该怎么做
2026/5/19 12:16:48 网站建设 项目流程
汽车可以做哪些广告视频网站,官方网站想反应问题不弄应该怎么做,如何编写网站建设销售的心得,项目外包【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】在开发界面的时候#xff0c;有一种情况是肯定会发生的#xff0c;那就是异步通信。大家都知道#xff0c;lvgl本身运行是独立运行的一个thread版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】在开发界面的时候有一种情况是肯定会发生的那就是异步通信。大家都知道lvgl本身运行是独立运行的一个thread但是linux下面一个程序不大可能只有一个thread。在这种情况下其他线程如何给lvgl发消息更新里面的状态呢1、直接处理控件是否可行一个linux程序里面除了lvgl可能还有一些外部硬件需要处理。比如说按键后台就需要不停轮询检测哪些按键被按下去了哪些按键抬起来。等到按键抬起来的时候就会trigger一个按钮事件发送给lvgl里面的控件。这种情况下是否可以直接处理lvgl控件呢2、lvgl内部不支持多线程保护lvgl本身是非常轻量的图形界面库它除了适配linux还适配mcu等很多小的处理器。这些小的处理器上面很多时候是没有操作系统的所以也就谈不上锁这类工具。因此假设在linux上面运行lvgl其他线程要操作lvgl里面的对象是不可以直接操作的因为一旦操作就可能遇到不可想象的后果。3、自定义消息的模式这种模式是目前为止最合理的模式。一方面按键需要轮询另外一方面又不能对lvgl里面的控件直接处理。此时最好的方法就是设计一个状态机判断当前处于哪个子窗口然后把子窗口和对应的消息通过队列的形式发送给lvgl线程让lvgl自己来处理这样就不会涉及到多线程访问的问题。只不过这种方式稍显麻烦一点需要自己维护一个消息队列大家未必乐意这么去做。4、异步调用lv_async_call从lvgl 8.x版本出现之后系统出现了一个好用的api那就是lv_async_call函数。也就是说其他线程如果需要对lvgl进行数据更新那么直接调用这个函数就可以了。函数本身有两个参数一个是函数指针一个是对应函数的参数供函数内部使用。大多数情况下这些函数指针都会写成匿名函数的形式。这也就是lv_async_call的由来。从字面意义上也可以分析所谓异步调用的本质是什么那就是外部线程不直接更新lvgl线程的内容而是把函数指针和数据发送给lvgl线程等lvgl在合适和恰当的时候来处理这部分数据。这就是异步的含义所在。5、函数参数是最大的危险看上去lv_async_call很完美解决了不同线程更新lvgl控件的问题但是这里面潜藏一个很大的危险那就是lv_async_call第二个参数指针的问题。大多数时候lv_async_call就是把消息push到某个队列里面立马就返回了。所以这个时候发送出去的lv_async_call数据参数千万不能是局部变量只能是全局变量。因为这个指向的数据参数假设是某个堆栈变量则很容易被改写。一旦被改写就有可能出现意想不到的结局到时候调试起来就麻烦了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询