4

我们在应用程序中观察到 Windows 7 x64 上的4-6个线程,这些线程有3 个线程,并且在 Windows 7 之前的任何 Windows(32 位或 64 位)上都能正常运行。

Process Explorer 显示以下“未知”线程:

ntdll.dll!EtwDeliverDataBlock+offset

随机间隔后出现以下线程:

ntdll.dll!TpCallbackIndependent+offset
ntdll.dll!TpCallbackIndependent+offset

在该应用程序无法创建线程之后(错误代码 8,足够热的空间......)。

在我看来,某些系统 DLL 创建了 ETW 线程或其他东西。有谁知道这些线程的用途以及如何管理它们?

4

1 回答 1

5

TP 线程是 Windows 线程池 API 的一部分,并且是因为您的应用程序(或您的应用程序使用的 DLL)使用了 Windows 线程池 API 而创建的。您的应用程序(或您的应用程序使用的 DLL 之一)似乎也在使用 ETW API,这些 API 也使用几个线程。你真的没有能力管理这些线程。

我严重怀疑这些线程是导致内存不足错误的原因。问题更有可能是您的进程中没有足够的连续内存来为新线程的堆栈保留空间。

于 2010-03-22T15:38:19.023 回答