我在Android平台上使用libDispatch(GCD)opensource。因此,大多数复杂耗时的任务都是通过NDK完成的(我使用的是libDispatch)。
我正在使用函数RunOnMainQueueDelayed在MainQueue上安排一些延迟的任务。为了运行主队列任务,我在java端运行一个15ms的计时器,每当计时器到期时,我运行一个JNI调用,它将在本机端运行函数_dispatch_main_queue_callback_4CF,以便主服务器上的任务被执行。
现在我面临的问题是,如果我在主要队列中提供的延迟小于执行任务的约15毫秒。但是,如果延迟超过15毫秒,或者在执行至少一个任务之后在队列上调度任务,则不执行任何任务。
我无法理解MainQueue这种奇怪行为的原因。我试图调试libdispatch的代码,但找不到原因。
有人请问mainQueue是如何工作的,这可能是造成这个问题的原因。