0

初めてスレッドを使ってプログラミングしています。私のプログラムは、一度に少量のデータしか表示しません。ユーザーがデータを移動するときに、次にアクセスできる可能性のあるすべてのデータをロードして、ユーザーが新しいセクションに切り替えたときの遅延をできるだけ少なくしたい.

最悪のシナリオでは、データの 6 つのセクションをプリロードする必要があるかもしれません。だから私は次のようなものを使用します:

if (SectionOne == null)
{
    ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(PreloadSection),
        Tuple.Create(thisSection, SectionOne));
}
if (SectionTwo == null)
{
    ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(PreloadSection),
        Tuple.Create(thisSection, SectionTwo));
}
//....

各エリアをプリロードします。8 コアのメイン システムでうまく機能します。しかし、コアが 4 つしかないテスト システムでは、スレッドの実行中にシステム全体の速度が低下します。

最大 TotalCores - 同時に 2 スレッドを実行したいと考えています。しかし、本当に私にはわかりません。

これを複数のシステム設定(シングルコアから8コアなど)で可能な限り効率的に実行するための助けを探しています。また、私は C# を使用しており、これはポータブル クラス ライブラリ プロジェクトであるため、いくつかのオプションが制限されています。

4

1 に答える 1