に私はここで説明のThreadPool、QueueUserWorkItemとデッドロックがシャットダウン
非常に単純な実装のようなスレッドプールを実装し、正常に動作しませんが、私のアプリケーションはもはやシャットダウンします。私はQueueUserWorkItemのヘルプ項目で使用される(WinAPIの関数の中でIOの完了について何かを読んだことを覚え機能に
ntdll.ZwRemoveIoCompletion
を突っ込ん2つのワーカースレッドという(他1つのスレッド、私はキューイングスレッドを推測する)ようですスレッドプールの実装)、私はそれを正しく理解できませんでした。私はWT_EXECUTELONGFUNCTIONをワーカースレッドに使用しました。実行には時間がかかることがあり、既存のワーカースレッドが終了するのを待たずに、新しいワーカースレッドを作成します。ワーカースレッドに割り当てられたタスクの中には、I/O処理を実行するものがあります。私はWT_EXECUTEINIOTHREADを使用しようとしましたが、それは役に立たないようです。
私は、コールスタックwithtクリティカルセクションは、私がここで間違ってやっている
System.Halt0, System.FinalizeUnits, Classes.Finalization, TThread.Destroy,
RtlEnterCriticalSection, RtlpWaitForCriticalSection
任意のアイデアであることにエントリのメインスレッドが待機することを言及する必要がありますか?あなたの助けを前もってありがとう。
詳細なコールスタックを取得する必要がありますか?間違いなくTThread.DestroyとRtlEnterCriticalSectionの間に何かがありません。 – Alex