こことここでプリエンプティブ マルチスレッドについて読みました。
Delphi でこれを行う方法はありますか? Delphi でスレッド化する他の方法と比較して (利点と欠点) はどうですか?
こことここでプリエンプティブ マルチスレッドについて読みました。
Delphi でこれを行う方法はありますか? Delphi でスレッド化する他の方法と比較して (利点と欠点) はどうですか?
あなたが言及している「他の方法」はすべて、オペレーティングシステムの基礎となるスレッド機能を使用しているようです。これはプリエンプティブです。言い換えれば、最も便利だと思う方を選択すると、先取りされます。
非プリエンプティブ (別名協調) スレッドを取得するには、通常、スレッドを「ファイバー」に変換することによって、少し余分な作業が必要です。
最新バージョンの Windows はすべて、プリエンプティブ マルチタスクオペレーティング システムです。これは、スレッドとプロセス (存在するプロセスが少なくとも 1 つの実行スレッドを必要とする場合) がすべてスケジュールされ、プリエンプティブに実行されることを意味します。
したがって、「Delphiでこれを行う方法はありますか」には次の答えがあります。
最良の答えは、TThreadまたはネイティブ Windows スレッドまたはそれらの周りのラッパーを使用することです。プリエンプティブ マルチスレッドが可能になります。
リンク内のすべてのモデルは通常の Windows スレッドを使用しており、あなたの質問は、主に通信または実行中のタスク (他のスレッドで実行される作業のジョブ) の技術であるさまざまなスレッド技術について混乱していることを意味していると思われます。その場合は、質問を更新するか、これらのモデルの説明を探している別の人に尋ねてください。
Windows7で導入されたユーザーモードスケジューリングを見たことがありますか。ファイバーは基本的に実際には機能しません。これに関する情報はMSDNサイトにたくさんあり、チャンネル9のいくつかのビデオを思い出しているようです。