首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 線程資源同步方式總結(一)——volatile 欄位與 Interlocked 原子操作

     編輯:關於C語言

1. volatile 關鍵字:欄位層級同步

宣告為 volatile,CLR 保證讀取永遠為最新值 (禁止指令重排/快取優化)。適用型別:

  • 參考型別
  • 指標 (unsafe)
  • sbyte, byte, short, ushort, int, uint, char, float, bool
  • 以此為底層型別的列舉

2. Interlocked 類別:整數原子操作

i = i + 1 非原子 (讀取 → 加一 → 寫入)。多執行緒下易產生競態。

Interlocked 核心方法

  • Increment(ref int):原子加一
  • Decrement(ref int):原子減一
  • Exchange(ref int, value):原子交換

代碼示範


int i = 0;
Interlocked.Increment(ref i);  // 1
Console.WriteLine(i);
Interlocked.Decrement(ref i);  // 0
Console.WriteLine(i);
Interlocked.Exchange(ref i, 100); // 100
Console.WriteLine(i);

執行輸出

Interlocked 輸出 1, 0, 100

適用場景

  • 計數器、旗標、簡單數值共享
  • 避免 lock 開銷,效能極高
  • 僅限單一數值操作,複雜邏輯仍需 lock/Monitor
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved