为了争论,我试图定义一个算法来创建 一个任务池(每个任务都有一个单独的时间片来操作) 并在没有系统时钟的情况下管理它们。
我遇到的问题是,我采用的每一种方法, 具有较高时间片的任务被饿死。
我尝试做的是创建一个包含一对任务/(int)“时间”的任务向量。 我首先对具有最低“时间”的向量进行排序,然后迭代并执行时间为零 (0) 的每个任务。在遍历整个向量时,我减少了每个任务的“时间”。
有没有更好的方法来解决这种“问题”。按照我的方法,肯定会启动。
最佳答案
管理任务可能根本不需要系统时钟。 您只需要想出一种方法来确定每个任务之间的优先级,然后按照它们的优先级运行每个任务。
您可能想暂停一个任务以执行另一个任务,然后需要为暂停的任务设置新的优先级。此功能(多任务处理)需要基于事件(通常是时钟时间,但您可以使用任何其他事件,例如温度或猴子按下按钮或其他进程发送信号)进行中断。
您说您的问题是具有较高时间片的任务正在挨饿。 当您在运行每个任务时减少其“时间”并假设“时间”不会为负数时,更高时间片的任务最终将变为 0,其他所有任务也是如此。
关于algorithm - 不使用系统时钟管理任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592405/