老师,请教个调度计划表map的问题?
来源:8-5 实现任务调度协程(下)
y_play
2019-03-21
假如调度计划表map有10万个计划(反正会遍历超过2秒),其中有一个任务2秒周期执行,其他都是一天一个月执行的。
我的问题是,2秒就要执行,但是map遍历超过了2秒,2秒的那个任务执行就要延后了哟?那这样任务就不是定时执行了吧。不知道我思考的对不对。
写回答
1回答
-
小鱼儿老师
2019-03-21
同学好,假设遍历10万个任务需要2秒成立,那么你说的情况也不会出现。
检查的逻辑是先获取当前时间,保存在now变量中,然后遍历每个任务与它们的调度时间做比较,整个过程中now不会发生改变,与遍历耗时无关,任务一定可以被调度。
之所以采用遍历检查的方式是因为实现简单,如果我们做的更好应该考虑更合适的数据结构,比如:最小堆+哈希表,但鉴于实现成本高所以没有在课程中体现。
122021-03-21
相似问题