…это возможность распараллелить код
инициализации подсистем по разным процессорам. Учитывая скорость
распространения многоядерных процессоров это становиться актуальной
задачей. Вынести большую часть кода из DllMain и конструкторов
статических объектов не сложно. Достаточно оформить доступ ко всем
подсистемам через singleton-подобный интерфейс, защищённый критической
секцией. Сложнее – выстроить зависимости между подсистемами так, чтобы
инициализация выполнялась как можно позже, когда все рабочие потоки
созданы и готовы к работе.
Не менее важно и не перестараться с отложенной инициализацией. 30
секундное шуршание головками винчестера в ответ на безобидный щелчок
мышью может вывести из себя даже спокойного пользователя. Или ещё хуже,
удаленное приложение может оборвать соединение, так и не дождавшись
ответа.
Cross-posted from blog.not-a-kernel-guy.com.