foreach (int tranQuote in transactionIds)
{
CompassIntegration compass = new CompassIntegration();
Chatham.Business.Objects.Transaction tran = compass.GetTransaction(tranQuote);
// then we want to send each trade through the PandaIntegration
// class with either buildSchedule, fillRates, calcPayments or
// a subset of the three
PandaIntegrationOperationsWrapper wrapper = new PandaIntegrationOperationsWrapper { buildSchedule = false, calcPayments = true, fillRates = true };
new PandaIntegration().RecalculateSchedule(tran, wrapper);
// then we call to save the transaction through the BO
compass.SaveTransaction(tran);
}
ここでは2行に非常に長い時間がかかります。 transactionIds
には私がこれを行う約18kのレコードがあります。パフォーマンスを向上させるためにループ内にスレッドをスクロールする
GetTransaction
とSaveTransaction
は、最も時間がかかる2行ですが、正に、パフォーマンスを向上させるためにループ内で発生するものをスレッド化するのが好きです。
CPUなどの問題を起こさずにこれをスレッドするには、どのような方法が最適ですか?私は本当にどれくらいのスレッドが安全であるか、スレッドの管理方法やそのようなものについてはよく分かりません。
ありがとうございます。
彼らはそうではないと言って、私は何をしなければならないだろうか? Henkに感謝します。 – slandau
あなたはそれらをスレッドセーフにしなければならず、複雑になる可能性があります。しかし、それらはインスタンスごとのように見え、スレッドごとに新しいコンパスインスタンスがあります。だから私はあなたが大丈夫だと思う。 –
ええと、.NETが何かを適切にキューイングする方法でビルドされていたかどうかわかりませんでしたが、一時停止するかw/eする前にスレッドでできることを実行していました。 – slandau