Во время написания приложения, я столкнулся с какой-то странное поведение, что я не ожидал и перегоняют его вниз к следующему:Запуск 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
?
Я согласен с Биллом, это деталь реализации по строкам «сколько у меня осталось на моем объекте», которое следует рассматривать только как самое неуместное любопытство. Тем не менее, я думаю, что, вероятно, что farFuture означает «работать вечно до тех пор, пока источник входных данных не срабатывает», а при предоставлении ему определенного времени требует, чтобы он создавал источник таймера на некотором уровне для автоматического прерывания цикла запуска. – danielpunkass
Я предполагал, что не о чем беспокоиться, но мне все равно было очень любопытно. Мне всегда нравится больше узнать о таких вещах. Спасибо вам обоим! – user988375