gpt4 book ai didi

multitasking - 协同多任务系统

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

我试图绕过协作多任务系统的概念以及它在单线程应用程序中的工作原理。

我的理解是,这是一种“多任务处理的形式,其中多个任务通过在每个任务中的程序员定义的点自愿将控制权让给其他任务来执行”。

因此,如果您有一个任务列表并且一个任务正在执行,您如何确定将执行传递给另一个任务?当您将执行权交还给之前的任务时,如何从之前的位置恢复?

我觉得这有点令人困惑,因为我不明白如果没有多线程应用程序如何实现这一点。

任何建议都会非常有帮助:)

谢谢

最佳答案

协作多任务处理背后的基本思想是信任——每个子任务将自行及时放弃控制,以避免占用其他任务的处理器时间。这就是为什么协作式多任务系统中的任务需要非常彻底的测试,并且在某些情况下需要经过认证才能使用。

我不自称是专家,但我想协作任务可以作为状态机来实现,将控制权传递给任务会导致它运行绝对 最小 取得任何进展所需的时间。例如,文件读取器可能会读取文件的下几个字节,解析器可能会解析文档的下一行,或者传感器 Controller 可能会读取一次,然后将控制权返回给协作调度程序,该调度程序将检查任务完成。

每个任务都必须将其内部状态保留在堆上(在对象级别),而不是像传统的阻塞函数或线程那样在堆栈帧(在函数级别)上。

与依赖硬件计时器来触发上下文切换的传统多任务处理不同,协作式多任务处理依赖于以这样一种方式编写的代码,即每个长时间运行的任务的每一步都保证在可接受的少量时间内完成.

关于multitasking - 协同多任务系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415303/

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