gpt4 book ai didi

multithreading - 具有相同优先级的FreeRTOS Mutex多任务

转载 作者:行者123 更新时间:2023-12-03 13:19:10 24 4
gpt4 key购买 nike

我在使用FreeRTOS二进制互斥锁时遇到了一些问题。在我看来,有多个具有相同优先级的线程(任务),其中两个访问文件互斥量和互斥量内的文件I/O功能。

根据某些时间安排,一项任务会使另一项饥饿。那可能吗?

FreeRTOS考虑了任务等待资源多少时间?

谢谢

最佳答案

您是否在多个任务的紧密循环中使用互斥锁?如果是这样,则有一个逻辑原因,为什么一个任务可能会使互斥对象保留的时间比您想象的更长。如果任务A和B具有相同的优先级,A持有互斥量,而B正在等待互斥量,那么当A退还互斥量时,上下文切换将不会发生,因为B具有与A相同的优先级(如果B具有更高的优先级,但是如果将任务切换到同等优先级的任务,则将违反调度算法,并有可能导致任务崩溃。在那里,如果A处于循环中,则将互斥量交还,然后立即再次使用它,每次B尝试获取该互斥量时,都会发现A仍在保持该互斥量,因此,如果B也在循环中,它将阻塞再次在互斥体上。这种情况很容易解决-但建议您阅读可免费获取的书中描述此情况的章节:http://www.freertos.org/Documentation/RTOS_book.html

关于multithreading - 具有相同优先级的FreeRTOS Mutex多任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43936777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com