Во-первых, 66 == 64 (максимальный размер пула потоков GCD) + основной поток + некоторый другой случайный поток не-GCD.
Во-вторых, GCD не волшебство.Он оптимизирован для загрузки ЦП кодом, который в основном связан с ЦП.«Магия» GCD заключается в том, что он динамически создает больше потоков, чем процессоров, когда рабочие элементы непреднамеренно и ненадолго ждут завершения операций.
Сказав это, код может сбить с толку планировщик GCD, умышленно спя или ожидая событийвместо использования источников отправки для ожидания событий.В этих сценариях блок работ эффективно реализует свой собственный планировщик, и поэтому GCD должен предполагать, что поток был выбран из пула потоков.
Короче говоря, пул потоков будет работать оптимально, если ваш кодпредпочитает dispatch_after () над API-интерфейсами типа sleep (), а источники рассылки - над циклами событий, созданными вручную (Unix select () / poll (), циклы запуска Какао или условные переменные POSIX).