В моем приложении iOS я использую GCD в качестве таймера, выполненного на фоновом потоке. Вот мой код:Когда отправляется таймер отправки
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0));
double interval = 1.0;
dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, 0);
uint64_t intervalTime = (int64_t)(interval * NSEC_PER_SEC);
dispatch_source_set_timer(timer, startTime, intervalTime, 0);
dispatch_source_set_event_handler(timer, ^{
// some code
});
// start timer
dispatch_resume(timer);
Мне интересно, когда вызывается код внутри блока. Он вызывается каждую секунду (может случиться, что он называется даже предыдущим вызовом еще не закончен), или он вызывается через одну секунду после завершения предыдущего вызова?