6-2_LVGL的非线程安全问题

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

拓展学习