2012-05-09 3 views
1

Во время написания приложения, я столкнулся с какой-то странное поведение, что я не ожидал и перегоняют его вниз к следующему:Запуск NSRunLoop с разными датами изменения наблюдаются количество потоков

Я сделал приложение, основной функцией которого является, как следующим образом. Наблюдая за ним в Activity Monitor, он использует один поток.

int main(int argc, const char * argv[]) 
{ 
    @autoreleasepool 
    { 
     while (YES) 
     { 
      [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode 
            beforeDate:[NSDate distantFuture]]; 
     } 
    } 

    return 0; 
} 

Если изменить [NSDate distantFuture] к [NSDate dateWithTimeIntervalSinceNow:1.0], приложение использует ~ 3 темы. Немного выяснив, что из моего имени было создано неявное создание dispatch_queue, которое, в свою очередь, создает пул потоков.

Просто любопытно: почему это происходит? Как насчет [NSDate dateWithTimeIntervalSinceNow:1.0] заставляет цикл цикла создавать dispatch_queue?

ответ

2

Скорее всего, детали реализации и не о чем беспокоиться ....

Один возможно осуществление distantFuture является «не сделать это навсегда», и, следовательно, нет необходимости в таймере, как один ж/конкретный Дата. Учитывая, что «таймер» может быть действительно dispatch_after(), это может объяснить очередь.

Или нет. Интересный вопрос, но, скорее всего, совершенно не подходит для вашего приложения.

+3

Я согласен с Биллом, это деталь реализации по строкам «сколько у меня осталось на моем объекте», которое следует рассматривать только как самое неуместное любопытство. Тем не менее, я думаю, что, вероятно, что farFuture означает «работать вечно до тех пор, пока источник входных данных не срабатывает», а при предоставлении ему определенного времени требует, чтобы он создавал источник таймера на некотором уровне для автоматического прерывания цикла запуска. – danielpunkass

+1

Я предполагал, что не о чем беспокоиться, но мне все равно было очень любопытно. Мне всегда нравится больше узнать о таких вещах. Спасибо вам обоим! – user988375