- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图绕过协作多任务系统的概念以及它在单线程应用程序中的工作原理。
我的理解是,这是一种“多任务处理的形式,其中多个任务通过在每个任务中的程序员定义的点自愿将控制权让给其他任务来执行”。
因此,如果您有一个任务列表并且一个任务正在执行,您如何确定将执行传递给另一个任务?当您将执行权交还给之前的任务时,如何从之前的位置恢复?
我觉得这有点令人困惑,因为我不明白如果没有多线程应用程序如何实现这一点。
任何建议都会非常有帮助:)
谢谢
最佳答案
协作多任务处理背后的基本思想是信任——每个子任务将自行及时放弃控制,以避免占用其他任务的处理器时间。这就是为什么协作式多任务系统中的任务需要非常彻底的测试,并且在某些情况下需要经过认证才能使用。
我不自称是专家,但我想协作任务可以作为状态机来实现,将控制权传递给任务会导致它运行绝对 最小 取得任何进展所需的时间。例如,文件读取器可能会读取文件的下几个字节,解析器可能会解析文档的下一行,或者传感器 Controller 可能会读取一次,然后将控制权返回给协作调度程序,该调度程序将检查任务完成。
每个任务都必须将其内部状态保留在堆上(在对象级别),而不是像传统的阻塞函数或线程那样在堆栈帧(在函数级别)上。
与依赖硬件计时器来触发上下文切换的传统多任务处理不同,协作式多任务处理依赖于以这样一种方式编写的代码,即每个长时间运行的任务的每一步都保证在可接受的少量时间内完成.
关于multitasking - 协同多任务系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415303/
我想插入 备注 关于要在我的 latex 文档的特定位置进行的修复 也许有一个 列表的“待办事项/修复我” 你怎么处理这个? 似乎一种方法是使用 fixme 包,但我无法使其工作。 有人在用吗? 最佳
错误:无法创建表。我已经创建了一个数据库,并且已经提供了所有特权。但仍然无法登录协作模块。我受够了,但我不想放弃。我已经尝试了所有可能的方法,但都行不通。 Stackoverflow 是我所知道的最好
我是一名优秀的程序员,十分优秀!