Я использую libDispatch (GCD) с открытым исходным кодом на платформе Android. Таким образом, большинство сложных трудоемких задач выполняются через NDK (где я использую libDispatch).
Я планирую некоторые задачи с задержкой в MainQueue, используя функцию RunOnMainQueueDelayed. Для запуска задач основной очереди я запускаю таймер 15 мс на стороне Java, и всякий раз, когда таймер истекает, я запускаю вызов JNI, который запускает функцию _dispatch_main_queue_callback_4CF на собственной стороне, поэтому задачи в основной очереди выполняются.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что если я обеспечиваю задержку в основной очереди, которая составляет менее ~ 15 мс, задача выполняется. Но если задержка составляет более 15 мс или задача поставлена в очередь после выполнения хотя бы одной задачи, то ни одна из задач не будет выполнена.
Я не могу понять причину такого странного поведения MainQueue. Я попытался отладить код libdispatch, но не смог найти причину.
Кто-нибудь, пожалуйста, как работает mainQueue и что может быть причиной этой проблемы.