次の特性を持つ Delphi でスレッドを作成する必要があります。
- メイン スレッドが共有キューにデータを追加するまで待機します。
- キュー内のすべてのデータを処理し、結果をメイン スレッドに返します (この最後の部分では、メイン ウィンドウにメッセージを送信するだけです)。処理には時間がかかるため、ワーカー スレッドが前のエントリを処理している間に、新しいデータがキューに追加されることがあります。
- 可能な限り少ない CPU サイクルを使用して、待機を再開します。
ウィンドウハンドルがないため、スレッドにメッセージを送信できません。
WaitForObject のバリアントを使用する必要がありますか? もしそうなら、何を待つのでしょうか?そうでない場合、どうすればスレッドを待機させ、新しいデータがキューを下ったときにスレッドを起こすことができますか?
Multithreading - The Delphi Wayを読みましたが、私の質問には答えていないようです。おそらく 、OmniThreadLibraryは私が必要とすることを行うことができます。資料が少ないのでなんとも言えません。ここでライブラリが役立つかどうか、およびその使用方法 (または、単に TThread の子孫を操作する代わりに使用する理由さえ) を理解するために、一般的にスレッドについて十分に知りません。