91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解C#線程同步

發布時間:2021-06-16 14:55:05 來源:億速云 閱讀:128 作者:chen 欄目:編程語言

這篇文章主要介紹“如何理解C#線程同步”,在日常操作中,相信很多人在如何理解C#線程同步問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解C#線程同步”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在向大家詳細介紹C#線程同步之前,首先讓大家了解下C#線程的中止,然后全面介紹C#線程同步。

C#線程的中止

由于能夠在沒有任何征兆的情況下使運行的程序進入一種混亂的狀態,Java中的Thread.stop受到了普遍的反對。根據所調用的stop()方法,一個未經檢查的java.lang.ThreadDeath錯誤將會破壞正在運行著的程序的棧,隨著它的不斷運行,能夠解除任何被鎖定的對象。由于這些鎖被不分青紅皂白地被打開,由它們所保護的數據就非常可能陷入混亂狀態中。

根據當前的Java文檔,推薦的中止一個線程的方法是讓運行的線程檢查一個由其他的線程能夠改變的變量,該變量代表一個“死亡時間”條件。下面的程序就演示了這種方法。

// 條件變量  private boolean timeToDie = false;  // 在每次迭代中對條件變量進行檢查。  class StoppableRunnable  extends Runnable {  public void run() {  while( !timeToDie ) {  // 進行相應的操作  }  }  }

上述的討論對C#中的Abort方法也適合。根據調用的Abort方法,令人捉摸不定的System.Threading.ThreadAbortException可能會破壞線程的棧,它可能釋放線程保持的一些變量,使處于保護狀態中的數據結構出現不可預測的錯誤。我建議使用與上面所示的相似的方法來通知一個應該死亡的線程。

C#線程同步

從概念上來看,線程非常易于理解,實際上,由于他們可能交互地對同一數據結構進行操作,因此它們成為了令編程人員頭疼的一種東西。以本文開始的 ThreadingExample為例,當它運行時,會在控制臺上輸出多種不同的結果。從 1 2 3 4 5 1 2 3 4 5到 1 1 2 2 3 3 4 4 5 5或 1 2 1 2 3 3 4 5 4 5在內的各種情況都是可能出現的,輸出結果可能與操作系統的線程調度方式之間的差別有關。有時,需要確保只有一個線程能夠訪問一個給定的數據結構,以保證數據結構的穩定,這也是我們需要C#線程同步機制的原因所在。

為了保證數據結構的穩定,我們必須通過使用“鎖”來調整二個線程的操作順序。二種語言都通過對引用的對象申請一個“鎖”,一旦一段程序獲得該“鎖”的控制權后,就可以保證只有它獲得了這個“鎖”,能夠對該對象進行操作。同樣,利用這種鎖,一個線程可以一直處于等待狀態,直到有能夠喚醒它信號通過變量傳來為止。

C#線程同步例子:

public static Object synchronizeVariable = "locking variable";   public static void count() {  synchronized( synchronizeVariable ) {  for( int count=1;count<=5;count++ ) {  System.out.print( count + " " );  synchronizeVariable.notifyAll();  if( count < 5 )  try {  synchronizeVariable.wait();  }  catch( InterruptedException error ) {  }  }  }  }

到此,關于“如何理解C#線程同步”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涡阳县| 葵青区| 岱山县| 抚松县| 甘洛县| 集安市| 孙吴县| 东莞市| 灵台县| 藁城市| 肃南| 黄浦区| 南昌市| 诸城市| 茂名市| 会同县| 鄂伦春自治旗| 镇原县| 苍南县| 朔州市| 普安县| 东乌珠穆沁旗| 澜沧| 山东省| 平谷区| 四会市| 康乐县| 玛多县| 北票市| 邹平县| 保靖县| 聊城市| 奉新县| 古田县| 密山市| 昌黎县| 车险| 乌鲁木齐县| 元氏县| 石河子市| 大姚县|