libDispatch, обслуживающий RunOnMainQueueDelayed из Java

Я использую libDispatch (GCD) с открытым исходным кодом на платформе Android. Таким образом, большинство сложных трудоемких задач выполняются через NDK (где я использую libDispatch).

Я планирую некоторые задачи с задержкой в ​​MainQueue, используя функцию RunOnMainQueueDelayed. Для запуска задач основной очереди я запускаю таймер 15 мс на стороне Java, и всякий раз, когда таймер истекает, я запускаю вызов JNI, который запускает функцию _dispatch_main_queue_callback_4CF на собственной стороне, поэтому задачи в основной очереди выполняются.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что если я обеспечиваю задержку в основной очереди, которая составляет менее ~ 15 мс, задача выполняется. Но если задержка составляет более 15 мс или задача поставлена ​​в очередь после выполнения хотя бы одной задачи, то ни одна из задач не будет выполнена.

Я не могу понять причину такого странного поведения MainQueue. Я попытался отладить код libdispatch, но не смог найти причину.

Кто-нибудь, пожалуйста, как работает mainQueue и что может быть причиной этой проблемы.


person Pankaj Goyal    schedule 21.01.2016    source источник
comment
Могу я спросить, как вам удалось скомпилировать и заставить работать libdispatch для Android? Я задавал аналогичный вопрос, но ответа пока нет. stackoverflow.com/questions/36459329/< /а>   -  person Sam Khawase    schedule 07.04.2016