В чем разница между 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 минут после его пробуждения.