国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

多線程系列(4)使用多線程的安全問題

2019-11-17 03:05:39
字體:
來源:轉載
供稿:網友

多線程系列(4)使用多線程的安全問題

  在使用多線程的時候,往往存在一定的公共數據,為了避免多個線程同時操作同一數據,我們需要為線程加鎖。

加鎖的原理:

每一個引用類型的對象都有一個同步索引塊,指示當前使用該對象的線程數,每個線程執行到Lock語句塊的時候就會判斷當前鎖定項(這里是this,當前窗體對象)的同步索引塊是否等于0(即沒有線程在訪問該變量),如果等于0則進入執行塊,首先將同步索引塊的索引加1,表示當前多了一個線程使用this,等lock塊執行完成再將同步索引塊中的索引值減1,使得其它線程能夠繼續訪問,這樣就相當于實現了一個排隊機制,使得在適當的時候該串行執行的代碼串行執行。

我們可以利用lock語句為線程加鎖。示例代碼如下:

需要鎖定對象:lock(this)

需要鎖定代碼段:Object obj = new Object(); lock(obj){…}

我們還可以利用lock語句的語法糖Monitor來實現,示例代碼如下:

class Control{      PRivate object obj=new object();       public void Method()      {            Monitor.Enter(obj);            try            {......}            catch(Excetion ex)            {......}            finally            {                Monitor.Exit(obj);            }      }}

至此,這個初級的多線程入門系列完成了。后面隨著對多線程認識的加深,我們再來進行補充。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 溆浦县| 安国市| 永登县| 霍城县| 扬州市| 昌吉市| 策勒县| 周至县| 临安市| 石景山区| 海晏县| 南陵县| 高淳县| 扎兰屯市| 永和县| 呼伦贝尔市| 阿城市| 宁城县| 林周县| 洛宁县| 连云港市| 桃园县| 灵川县| 永新县| 长武县| 德钦县| 拜泉县| 沂水县| 娱乐| 广饶县| 北京市| 北辰区| 宜君县| 赤壁市| 怀集县| 清水河县| 广南县| 博乐市| 包头市| 阜宁县| 新昌县|