LVGL的非线程安全问题
基于工程: 6_1_DshanMCU_H7R_Project_LVGL_FreeRTOS
线程安全与非线程安全:
- 线程安全:当一个线程(任务)访问某个数据时,在该线程操作完成之前,其他线程不能访问。确保不出现数据不一致或者数据污染。(多个线程操作同一个对象不会有问题)
- 非线程安全:不提供数据访问保护,在多个线程先后(尚未完成时就有其他线程进行处理)更改数据时不确保数据一致或不受污染。(多个线程操作同一个对象可能会出现问题)
关于LVGL非线程安全的描述:
osKernelStart
vTaskStartScheduler
/* Interrupts are turned off here, to ensure a tick does not occur
* before or during the call to xPortStartScheduler(). The stacks of
* the created tasks contain a status word with interrupts switched on
* so interrupts will automatically get re-enabled when the first task
* starts to run. */
portDISABLE_INTERRUPTS();
xPortStartScheduler
/* Initialise the critical nesting count ready for the first task. */
uxCriticalNesting = 0;
技术交流学习
欢迎加入讨论:
- 社区交流: https://forums.100ask.net
- QQ技术交流群(如群满,请加qq:401684796 验证备注:LVGL):962138234
- 微信交流群:添加微信: baiwenkeji_fae 验证备注:LVGL