Interlocked.CompareExchange有一組函數
名稱 | 說明 | |
---|---|---|
![]() ![]() |
CompareExchange(Double, Double, Double) |
比較兩個雙精度浮點數是否相等,如果相等,則替換第一個值。 |
![]() ![]() |
CompareExchange(Int32, Int32, Int32) |
比較兩個 32 位有符號整數是否相等,如果相等,則替換第一個值。 |
![]() ![]() |
CompareExchange(Int64, Int64, Int64) |
比較兩個 64 位有符號整數是否相等,如果相等,則替換第一個值。 |
![]() ![]() |
CompareExchange(IntPtr, IntPtr, IntPtr) |
比較兩個平台特定的句柄或指針是否相等,如果相等,則替換第一個。 |
![]() ![]() |
CompareExchange(Object, Object, Object) |
比較兩個對象是否相等,如果相等,則替換第一個對象。 |
![]() ![]() |
CompareExchange(Single, Single, Single) |
比較兩個單精度浮點數是否相等,如果相等,則替換第一個值。 |
![]() ![]() |
CompareExchange<T>(T, T, T) |
比較兩個指定的引用類型的實例 T 是否相等,如果相等,則替換第一個。 |
現在以
public static int CompareExchange( ref int location1, int value, int comparand
)
為例說明其運算過程:
比較location1與comparand,如果不相等,什么都不做;如果location1與comparand相等,則用value替換location1的值。無論比較結果相等與否,返回值都是location1中原有的值。
用法舉例:
-
while (Interlocked.CompareExchange(ref _lastRead, index + 1, index) < index)
-
{
-
}