成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#線程同步詳細分析

開發 后端
這里介紹C#線程同步,從概念上來看,線程非常易于理解,實際上,由于他們可能交互地對同一數據結構進行操作,因此它們成為了令編程人員頭疼的一種東西。

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

C#線程的中止

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

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

  1. // 條件變量  
  2. private boolean timeToDie = false;  
  3. // 在每次迭代中對條件變量進行檢查。  
  4. class StoppableRunnable  
  5. extends Runnable {  
  6. public void run() {  
  7. while( !timeToDie ) {  
  8. // 進行相應的操作  
  9. }  
  10. }  

上述的討論對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#線程同步例子:

  1. public static Object synchronizeVariable = "locking variable";  
  2.  
  3. public static void count() {  
  4. synchronized( synchronizeVariable ) {  
  5. for( int count=1;count<=5;count++ ) {  
  6. System.out.print( count + " " );  
  7. synchronizeVariable.notifyAll();  
  8. if( count < 5 )  
  9. try {  
  10. synchronizeVariable.wait();  
  11. }  
  12. catch( InterruptedException error ) {  
  13. }  
  14. }  
  15. }  

【編輯推薦】

  1. 運用C#數據提供者
  2. C#允許運算符重載剖析
  3. Java和C#頂層聲明概述
  4. C#完全限定名簡單分析
  5. C#數據類型簡單介紹
責任編輯:佚名 來源: 博客園
相關推薦

2009-09-07 14:18:01

C#內存管理

2009-09-03 17:57:06

C#聲明事件

2009-09-04 15:43:07

C#流模型

2009-08-10 17:34:42

C#數據庫連接池

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基礎

2009-09-14 13:50:35

LINQ編程模型

2009-09-08 15:56:50

Linq使用Group

2010-01-06 13:50:37

.NET Framew

2009-11-20 13:11:44

Oracle XML數

2009-09-09 09:48:43

Linq延遲加載

2009-09-14 16:21:34

LINQ To XML

2009-06-18 14:00:51

2009-10-10 13:52:57

VB Update方法

2009-12-03 17:41:40

PHP應用發展

2009-09-09 13:53:21

Linq表值函數

2009-10-28 10:06:29

VB.NET With

2009-03-24 09:17:58

驅動GSMAndroid

2021-10-25 19:52:52

IntentFilte

2009-09-04 14:41:09

C#同步線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产三级精品视频 | 毛片在线免费 | 亚洲最色网站 | 亚洲福利视频网 | 亚洲国产成人在线视频 | 中文字幕日韩欧美一区二区三区 | 久久国内精品 | 免费在线观看一区二区 | 91精品国产91久久久 | 国产精品不卡一区二区三区 | 日本小视频网站 | 一本色道精品久久一区二区三区 | 天天干在线播放 | 亚洲国产一区二区三区 | 成年人视频免费在线观看 | www中文字幕 | 日韩欧美三级电影 | 亚洲成人自拍 | 国产精品久久久久久一区二区三区 | 三级黄色片在线观看 | 天天看天天操 | 亚洲精品久 | 国产日韩欧美一区二区 | 亚洲精品v日韩精品 | 97免费在线观看视频 | 在线成人一区 | 人人干人人玩 | 国产成人99久久亚洲综合精品 | 亚洲人成人一区二区在线观看 | 成年无码av片在线 | 精品一区二区在线看 | 中文字幕在线一区 | 岛国av一区二区三区 | 亚洲日韩中文字幕一区 | 中文字幕一区二区三区精彩视频 | 亚洲 自拍 另类 欧美 丝袜 | 日本h片在线观看 | 剑来高清在线观看 | 久久久久久久久久久久久久久久久久久久 | 国产激情自拍视频 | 成人做爰9片免费看网站 |