既にスレッド化されているアプリケーションでマルチコア環境を明示的に利用する簡単な方法はありますか? (利用可能な場合)。
最初の問題は、ランタイム環境がマルチコア アプリケーションをサポートしているかどうかをどのように判断するかということです。
その後、マルチコア機能を使用できると判断した場合、別のコアで実行するようにスレッドを明示的に割り当てることはできますか? その場合、スレッド通信は OS/ハードウェアによって処理されますか、それとも手を汚す必要がありますか?
既にスレッド化されているアプリケーションでマルチコア環境を明示的に利用する簡単な方法はありますか? (利用可能な場合)。
最初の問題は、ランタイム環境がマルチコア アプリケーションをサポートしているかどうかをどのように判断するかということです。
その後、マルチコア機能を使用できると判断した場合、別のコアで実行するようにスレッドを明示的に割り当てることはできますか? その場合、スレッド通信は OS/ハードウェアによって処理されますか、それとも手を汚す必要がありますか?
アプリケーションがすでに適切にスレッド化されている場合は、何もする必要はありません。スレッド コンテキストの実行と処理は自動的に行われます。
スレッド化に関して言えば、アプリはコアを利用する方法でスレッド化されていますか? プロセッサを集中的に使用するタスクを個別のスレッドに分割していますか。そうでない場合は、処理タスクをより多くのスレッドに分割するように変更する必要があります。Environment.ProcessorCount を使用してコア数を取得し、実行時にタスクに適した数のスレッドを作成できます。
現時点では、 plinqやParallel FXなどの将来のテクノロジに目を向けない限り、不適切にスレッド化されたアプリ (シングル スレッド) をすべてのプロセッサ/コアを利用してスレッド化されたアプリにする方法は実際にはありません。
こんにちは、私が知っている拡張機能は 2 つあります
並列 3.5 拡張機能については、MS June CTP の Somasegars MSDN ブログを参照してください。
MSDN
ライブラリは、次のコンポーネントで構成されています。
それが問題です。スレッド化されたアプリケーションを作成する方法、既存のコードを変換する方法。C# でマルチコアを活用したい。ただし、ParallelFX はまだベータ版です。ベータ版を使用して開発するつもりはありません。そして、すべてのコードを再度変更したくありません (VB 6 からアプリを翻訳しました)。今日、Packt Publishing から、C# による並列プログラミングに関する新しい本を発表するニュースレターを受け取りました。C# 2008 および 2005 スレッド プログラミング。私たちがどこでもブログを書いていることに焦点を当てていると思います。新しい奇跡の言語を待たずに、スレッド化されたアプリケーションを考えて開発する方法。このトピックに関するブログがたくさんあるので、このトピックに完全に特化した本を見るのはクールです. リンクはhttp://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/bookです 機会に値すると思います。購入したら感想をお伝えします。
現在、 Process.ProcessorAffinityを使用して特定のプロセスで使用可能なプロセッサを設定できますが、特定のスレッドを特定のプロセッサに割り当てることは、内部で暗黙的に処理されます。ほとんどの場合、これは実際には良いことです。リアルタイムのパフォーマンスと負荷分散情報を使用するインテリジェントなランタイムは、通常、少なくとも少数コアのコンテキストで主流のマルチコアが動作する場合、静的に実行できるよりも優れた仕事をすることができるからです。
詳細は省きますが (どの程度の情報が公開されているかはまだわかりません)、次のバージョンの .NET フレームワークでは、これを行うのにさらに役立つでしょう。手動でスレッドを管理することを考えたくない、または考える必要はないでしょう。これについては、PDC (10 月末) 後にさらに情報が公開されると確信しています。