0

System.Threading.ThreadPool.QueueUserWorkItem()を使用してタスクを実行しています。

アプリケーションを実行しているときに、大量のメモリを消費していることに気付き、タスク マネージャーを使用してダンプ ファイルを取得しました。調べてみると、次のスタックで多くのスレッドがスタックしていることがわかりました。

ntdll!NtWaitForSingleObject+a 
KERNELBASE!WaitForSingleObjectEx+79 
mscorwks!CLREvent::WaitEx+174 
mscorwks!CLREvent::WaitEx+63 
mscorwks!ThreadpoolMgr::SafeWait+7b 
mscorwks!ThreadpoolMgr::WorkerThreadStart+11a 
mscorwks!Thread::intermediateThreadProc+78 
kernel32!BaseThreadInitThunk+d 
ntdll!RtlUserThreadStart+1d 

また

ntdll!NtWaitForWorkViaWorkerFactory+a 
ntdll!TppWorkerThread+2c9 
kernel32!BaseThreadInitThunk+d 
ntdll!RtlUserThreadStart+1d 

これらのスレッドがスタックしているのはなぜですか? 間違った API を使用していますか? スレッドを正しく管理していないのでしょうか。

4

1 に答える 1

-2

問題は高CPUのようです。によると:

http://blogs.msdn.com/b/tess/archive/2008/02/27/net-debugging-demos-lab-4-high-cpu-hang-review.aspx

CPU が 80% を超えると、新しいスレッドが保留されます。

于 2015-02-15T10:23:29.630 に答える