В чем разница между dispatch_time и dispatch_walltime и в каких ситуациях лучше использовать один или другой?

Я знаю, что dispatch_time - это время по часам устройства, и если устройство идет спать, часы тоже спят. С другой стороны, dipatch_walltime - это время в зависимости от настенных часов, которые никогда не заснули. Мои вопросы заключаются в том, есть ли какая-либо разница, по производительности или другим, использовать один или другой в разных ситуациях? Может ли кто-нибудь дать мне более подробную информацию, потому что документы Apple не являются исчерпывающими.

Например, я пишу класс Timer, который работает с определенными интервалами. Также свобода может составлять от 10 до 30 секунд. Какой из них следует использовать dispatch_time или dispatch_walltime, по производительности.

Ответ 1

dispatch_time перестает работать, когда ваш компьютер переходит в режим сна. dispatch_walltime продолжает работать. Поэтому, если вы хотите сделать какое-либо действие через час, но через 5 минут ваш компьютер перейдет спать в течение 50 минут, dispatch_walltime будет выполняться через час, через 5 минут после того, как компьютер проснется. dispatch_time будет выполняться после того, как компьютер будет работать в течение часа, то есть через 55 минут после его пробуждения.