Ответ 1
Crystal ball говорит, что окно Debug > Windows > Threads показывает эти потоки в ntdll.dll!TppWorkerThread
. Обязательно включите Microsoft Symbol Server, чтобы увидеть это самостоятельно, используйте "Инструменты" > "Параметры" > "Отладка" > "Символы".
Это также происходит в VS2013, поэтому он определенно не вызван новыми диагностическими функциями VS2015, угадание @Adam не может быть правильным.
TppWorkerThread() - это точка входа для потока потока. Когда я устанавливаю точку останова с помощью Debug > New Breakpoint > Function Breakpoint для этой функции. Мне посчастливилось захватить эту трассировку стека для 1-го потока потока, когда второй поток потока ничей начал выполняться:
[email protected]() Unknown
ntdll.dll!LdrpMapDllNtFileName() Unknown
ntdll.dll!LdrpMapDllSearchPath() Unknown
ntdll.dll!LdrpProcessWork() Unknown
[email protected]() Unknown
ntdll.dll!TppWorkpExecuteCallback() Unknown
ntdll.dll!TppWorkerThread() Unknown
[email protected]@12() Unknown
ntdll.dll!__RtlUserThreadStart() Unknown
> [email protected]() Unknown
Очевидно, что загрузчик использует threadpool в Windows 10 для загрузки DLL. Это конечно новое:) В этот момент основной поток также выполняется в загрузчике, concurrency на работе.
Таким образом, Windows 10 использует несколько ядер для ускорения процесса. Очень особенность, а не ошибка:)