gpt4 book ai didi

c++ - 函数指针调用

转载 作者:行者123 更新时间:2023-11-30 04:39:50 31 4
gpt4 key购买 nike

假设有一个假想的操作系统...

其中有一个名为 settime 的函数,它获取指向函数的指针和时间戳。

要注意的是,每次调用该函数时,它都会运行上次调用(因此只会调用作为参数提供的新函数)。

我想向我的用户公开一个名为 settime2 的新函数,它将允许用户调用它,并在不破坏之前调用的情况下为函数计时。

在 settime2 实现中,我可以调用 settime。并获取当前时间。甚至使用 settime 或 settime2 作为函数指针参数调用 settime。

有什么建议吗?

谢谢

最佳答案

假设被调用的函数在特定时间被调用...

settime2 需要做的是保存一个函数指针和时间戳值的链表。将新的函数/时间戳值按排序顺序插入列表:最早的在前。

使用 settime 设置通用处理函数并将超时设置为所需的最早时间(超时列表的头部)。

调用通用处理程序时,移除列表的头部并调用其函数。如果列表的头部具有相同的时间戳,请重复执行此操作。

如果列表不为空,再次调用settime,时间戳在列表的头部。

如果时间戳确实是一个持续时间(例如 10 毫秒),则执行几乎相同的操作,但将保存的持续时间设为所有先前持续时间的总和以及形成最后一个持续时间的增量。

例如,使用 (f,15)、(g,7)、(h, 7) 和 (i,20) 的三个调用将构成列表

head -> (g,7) -> (h,0) -> (f, 8) -> (i,5)

第一个设置时间是 7 点,g 和 h 会被调用。下一个设置时间将在那之后的 8 点(总共 15 点)和 f 被调用,最后在 5 点之后(在 20 点)我会被调用。

当列表处于事件状态时,请小心处理列表更改。 ;-)

关于c++ - 函数指针调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947976/

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