gpt4 book ai didi

c - 没有操作系统调度程序的时间片功能

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:04 25 4
gpt4 key购买 nike

我有一个处理数据的图书馆的一部分,需要相当长的时间。在某些情况下,不可能等待函数的结果,但还有其他任务应该完成。在带有操作系统的系统上这不是问题,因为调度程序可以帮助解决这个问题。但也有一些系统没有可用的操作系统。在这些系统上,我想实现类似的功能,即调用函数进行一些计算并在给定时间段(比如 10 毫秒)后返回。然后其他的事情都做完了,数据处理函数被再次调用,并在它离开的位置起飞。

while(1) {
process_data(); // resumes from where it returned before, runs for 10ms and returns
do_other_stuff();
and_some_more_stuff();
}

如何实现?

我已经找到了原线程的概念,但这意味着我必须在每个可能需要 10 毫秒计算时间的 x 语句之后添加诸如 PT_WAIT 之类的东西。还有其他办法吗?

最佳答案

process_data 函数实现为状态机。将过长的处理算法分成多个较短的步骤/状态。在 process_data 中声明一个静态状态变量,以便它在每次调用时记住其先前的状态。每次 process_data 被调用时,它只执行一个状态。然后,当它再次被调用时,它会从中断的地方继续执行下一步。使用此方法,每次调用所花费的时间将取决于您在设计时如何划分步骤。您将无法在运行时限制执行时间。

如果处理是在重复循环中执行的,那么也许您可以在循环中读取硬件计时器,并在达到时间限制时跳出循环。但是使用静态变量来记住下一次调用处理停止的地方。

关于c - 没有操作系统调度程序的时间片功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226347/

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