decimal複数のスレッドから同時にアクセスされる変数があります。Interlockedクラス関数は小数をまったくサポートしていないため、私が残した唯一のアプローチはlock(){}. それはやり過ぎのようです。
decimalスレッドセーフな方法で変数に値を追加する他の方法はありますか?
decimal複数のスレッドから同時にアクセスされる変数があります。Interlockedクラス関数は小数をまったくサポートしていないため、私が残した唯一のアプローチはlock(){}. それはやり過ぎのようです。
decimalスレッドセーフな方法で変数に値を追加する他の方法はありますか?
ロックの使用はやり過ぎではありません。必須です。
System.Decimal のような構造型はアトミックではなく、ネイティブの CPU ワード サイズにも適合しません。これが、Interlocked にも過負荷がない理由です。
いいえ。 の内部表現はdecimal複雑すぎて、CPU レベルでアトミック命令を使用して変更を行うことはできInterlockedません (これはほとんどの場合に実行されることであり、関心のあることです)。
CPU がある程度の量をアトミックに処理できない場合、手動ロックが唯一のオプションです。同期プリミティブ (例:lockミューテックスに対して) を選択できますが、それだけです。