C#之Lock
lock?關鍵字將語句塊標記為臨界區,方法是獲取給定對象的互斥鎖,執行語句,然后釋放該鎖。
class Program{static void Main(string[] args){Thread t = new Thread(LockObject.MonitorIncrement);Thread t1=new Thread(new ThreadStart(LockObject.LockIncrement));t.Start(); t1.Start(); }}public class LockObject{/// <summary>/// 多線程共享數據/// </summary>private static int counter = 0;/// <summary>/// 同步對象,推薦這種寫法/// 應避免鎖定 public 類型,否則實例將超出代碼的控制范圍/// 具體如:lock (this)、lock (typeof (MyType)) 和 lock ("myLock")/// </summary>private readonly static object synisynchronize = new object();public static void MonitorIncrement(){///Monitor.Enter 與 Monitor.Exit 相當于Lock Monitor.Enter(synisynchronize);Thread.Sleep(1000);counter++;Console.WriteLine("MonitorIncrement counter={0}", counter);Monitor.Exit(synisynchronize);}public static void LockIncrement(){///lock在開始時調用 Monitor.Enter ///在結束時調用 Monitor.Exit 。lock (synisynchronize){ counter++;Console.WriteLine("LockIncrement counter={0}" ,counter);}}}運行結果如下圖示:
轉載于:https://www.cnblogs.com/bohetang/p/4039459.html
總結
- 上一篇: 起一卦都这么凶
- 下一篇: C# 对Datatable排序