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

淺談 .NET 多線程與並行計算(三):線程同步基礎(上)

     編輯:關於ASP.NET

線程同步本質:序列化共享資源訪問

「同步」非指線程步調一致,而是強制線程「按序」訪問共享可變資源,避免競態條件。線程衝突 = 多線程同時訪問共享資源導致資料不一致;線程安全 = 無衝突;需用同步手段達到安全。

輪詢等待的缺陷與改良

忙等待(Busy Wait):

Stopwatch sw = Stopwatch.StartNew();
Thread t1 = new Thread(() => { Thread.Sleep(1000); result = 100; });
t1.Start();
Thread.Sleep(500);
while (t1.IsAlive) ; // 空迴圈佔用 CPU 500ms
Console.WriteLine(sw.ElapsedMilliseconds); // ~1500ms
Console.WriteLine(result);

主線程空轉500ms浪費CPU

睡眠輪詢:

while (t1.IsAlive) Thread.Sleep(500); // 釋放時間片

總耗時~2000ms但CPU佔用極低

雖總時間較長(因睡眠粒度),但釋放了 CPU,適合非即時性要求場景。更優解:使用 EventWaitHandle、Join() 等同步原語。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved