我有一个大量使用任务并行库的应用程序。当我的应用程序运行时,我注意到 ProcessExplorer 报告的应用程序使用的线程数有时会超过 200 个线程,最终应用程序会在线程用完时锁定。
当我使用 AdPlus 对内存进行 FULL DUMP 并在 Visual Studio 中打开它时,我看到当时有 82 个线程在运行(尽管当时 ProcessExplorer 报告超过 100 个)。
其中许多线程(其中 42 个)仅显示以下堆栈跟踪:
ntdll.dll!_NtWaitForSingleObject@12() + 0x15 bytes
ntdll.dll!_NtWaitForSingleObject@12() + 0x15 bytes
kernel32.dll!@BaseThreadInitThunk@12() + 0x12 bytes
ntdll.dll!___RtlUserThreadStart@8() + 0x27 bytes
ntdll.dll!__RtlUserThreadStart@8() + 0x1b bytes
我的问题是:
具有上述堆栈跟踪的线程是否正在等待我启动并随后成为孤立的东西?还是该堆栈跟踪仅指示空闲线程?