.net ThreadPool を使用してマルチスレッド環境をセットアップでき、パフォーマンスが大幅に向上しました。これは、アプリケーションのバックグラウンドで実行されます。
ユーザーが新しいタスクを要求したときに、最大の CPU リソースを取得してパフォーマンスを最大化する必要があります。したがって、(ThreadPool.Queueuserworkitem メソッドを介して) 開始したすべてのスレッドを一時的に一時停止し、ユーザーがフォアグラウンドで要求した新しいタスクが完了したら再開したいと思います。
私の問題にはいくつかの解決策があるかもしれません:
を。より少ないバックグラウンド スレッドを開始して、新しいユーザー リクエストが CPU リソースの一部を共有できるようにします。(しかし、私は持っていたパフォーマンスの向上を失います:( )
b. 新しいユーザーが要求したタスクのスレッドにより高い優先度を設定します。(これが機能するかどうかわからない?)
c. 私が始めた ThreadPool スレッドの一時停止/再開。ただし、スレッドの一時停止/再開/中断はお勧めできません。さらに、これは扱いにくく、エラーが発生しやすくなる可能性があります。
他のアイデアはありますか?
注: ユーザーがリクエストを行うと、通常、タスクの実行に 300 ミリ秒以上かかることはありません。ただし、バックグラウンドで ThreadPool スレッドを開始すると、完了するまでに約 3 秒かかります (10 倍悪い)。500~800msかかってもOKです。すべてのバックグラウンド スレッドは約 8 秒で完了します (さらに 1 ~ 2 秒かかっても問題ありません)。したがって、今のところオプション ( a ) を試しています。
前もって感謝します!