4

3つのスレッドがあり、Windows 7より前の任意のWindows(32ビットまたは64ビット)で正常に動作するアプリケーションのWindows 7 x64で4〜6のスレッドを観察しています。

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の1つ)が、いくつかのスレッドを使用するETWAPIを使用しているようです。これらのスレッドを管理する機能は実際にはありません。

これらのスレッドがメモリ不足エラーの原因であるとは真剣に疑っています。問題は、新しいスレッドのスタック用のスペースを予約するのに十分な連続メモリがプロセスで利用できないことである可能性が高くなります。

于 2010-03-22T15:38:19.023 に答える