私はちょうどインターロックされたクラスを学びました、そして、それは単純にロックするよりも速くなるはずです。さて、これはすごくいいですが、私は実装に関して興味があります。インターロックはどのように機能し、なぜロックよりも速いのですか?
私が知る限り、変数に対する操作が原子的に行われるようにする唯一の方法は、いつでもその変数に1つのスレッドしかアクセスできないようにすることです。ロックされている
私はインターロックのソースを取得するために反射板を使用しましたが、それは、そのすべての作業を行うために、外部メソッドを使用しているようです:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
私はいくつかのテストを実行した、と実際にインターロックさの2倍です単にオブジェクトをロックしてインクリメントするだけの速さです。
彼らはどのようにしていますか?
CPUサポート.... – spender
どういう意味ですか? –