在最近的一次采访中遇到了一个有趣的问题,就这样吧。
需要实现一个函数,它将接受一个函数指针和一个时间间隔。它应该能够func1
被调用每个time_interval
.
我们提供了一个 API,每个时钟滴答都会调用它。可以多次调用 create_timer,在这种情况下,它应该根据各自的时间间隔调用每个函数指针。
// api
create_timer(&func, interval)
// call to api would look like
create_timer(&func1, 10);
create_timer(&func2, 5);
我建议创建一个函数指针的链接列表,但在这种情况下,它是对每个时钟滴答的线性搜索。这不是一个好的解决方案。
我也建议了一个优先队列解决方案,但这也没有奏效。我们需要存储每个函数调用 create_timer 的时间,然后计算与当前时间的差值,如果差值是 time_interval 的倍数,我们调用该函数。
有什么有趣的解决方案吗?