//定義原子變數 int mituxInt = -1; //原子級別+1值,如果>=0,說明當前鎖為空,可以執行,避免重覆執行 if (Interlocked.Increment(ref mituxInt) <= 0) { if (_serverThread == null || (_serverT... ...
//定義原子變數
int mituxInt = -1; //原子級別+1值,如果>=0,說明當前鎖為空,可以執行,避免重覆執行 if (Interlocked.Increment(ref mituxInt) <= 0) { if (_serverThread == null || (_serverThread.IsAlive == false)) { AutoConnect = isAutoConn; _serverThread = new Thread(new ThreadStart(ThreadConnectServer)); _serverThread.IsBackground = true; _serverThread.Start(); } Interlocked.Exchange(ref mituxInt, -1); }
int lock2=0; private void FuncMustDo() { //交換lock2 和1,返回lock2以前的值,這個和lock不一樣的是,可以加其他條件 while (Interlocked.Exchange(ref lock2, 1) != 0) { } //啪嗒啪嗒執行操作
//置0 Thread.VolatileWrite(ref lock2, 0);//Thread.VolatileWrite執行一個原子寫入操作,它的每次執行都具有釋放語義 }