タグ付けされた質問 「interlocked」

9
揮発性vs.インターロックvs.ロック
クラスに、public int counter複数のスレッドによってアクセスされるフィールドがあるとしましょう。これintは、増分または減分されるだけです。 このフィールドをインクリメントするには、どのアプローチを使用する必要がありますか。その理由は何ですか。 lock(this.locker) this.counter++;、 Interlocked.Increment(ref this.counter);、 のアクセス修飾子をcounterに変更しますpublic volatile。 私が発見したvolatileので、私は多くのlockステートメントとの使用を削除してきましたInterlocked。しかし、これを行わない理由はありますか?

2
CompareExchangeに基づくインターロックされた実装はSpinWaitを使用する必要がありますか?
以下は、に基づくインターロックされたメソッドの実装ですInterlocked.CompareExchange。 このコードでSpinWait繰り返しを行う前にスピンを使用することをお勧めしますか? public static bool AddIfLessThan(ref int location, int value, int comparison) { int currentValue; do { currentValue = location; // Read the current value if (currentValue >= comparison) return false; // If "less than comparison" is NOT satisfied, return false } // Set to currentValue+value, iff still on currentValue; …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.