-4

スレッド化した C# のコードは、多くのデータベース接続やストアド プロシージャの実行を伴うため、スレッド セーフではありません。しかし、それでも実行に必要な時間を最小限に抑えたいのですが、誰かが並列または非同期処理のために何か提案できますか..データベース側または.net側から何か...

スレッドで立ち往生しています..適用できません...

ありがとう

4

3 に答える 3

0

良い 。できることはいくつかあります。ただし、それがどれだけあなたに合っているかはわかりません。

データベース側では、クエリの最適化、インデックス作成、およびクエリの実行時間を増やすのに役立つその他のことを行うことができます。プロファイラーを使用して分析します。インデックスが適切に使用されているかどうかを確認するには、クエリ プランを参照してください。

NOLOCKS を使用しますが、selects で NOLOCKS を使用できないことがわかっている場合にのみ使用してください。(常に良い習慣とは限りませんが、使用されています)

複数のリクエストを処理できる適切な同期スレッドを実装します。.Net側から他に方法はありません。設計を適切にレビューする必要があります。ただし、プロファイラーを使用してコードの最適化を行うこともできます。タスク ライブラリも使用できます。

他には、サーバーに問題がある可能性があります。CPU とメモリの使用率を確認します。(これは私の懸念事項の中で最も少ないです)。

于 2012-08-06T18:53:17.633 に答える
0

あなたの質問には、最適化されたソリューションを提案するのに十分な情報がほとんどありません。ただし、スレッド セーフではないリソースを処理する必要がある場合は、別のプロセスを生成してサブタスクを処理する方法があります。

ただし、個別のプロセスは、ソリューション全体のうち相互に干渉しない部分を処理する必要があることに注意してください。

于 2012-08-06T18:47:19.147 に答える
0

コードで何をしているのかをよりよく説明する必要があります...

ループが多い場合は、 Parallel.For / Parallel.Foreach を試してください。

http://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel.aspx

Parallels では、順序付けられた計算のためにタスクをキューに入れたり、ループをブロックに分割して全体的なパフォーマンスを向上させることもできます...

情報が少ないので、私が言える最高のことです。

それが役に立てば幸い。

于 2012-08-06T19:04:46.813 に答える