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

首頁 > 編程 > C# > 正文

C#中volatile與lock用法

2019-10-29 21:44:19
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C#中volatile與lock用法,較為詳細的分析了C#中volatile與lock的適用情況及用法實例,具有一定的參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了C#中volatile與lock用法,分享給大家供大家參考。具體分析如下:

一、C#中volatile

volatile是C#中用于控制同步的關鍵字,其意義是針對程序中一些敏感數據,不允許多線程同時訪問,保證數據在任何訪問時刻,最多有一個線程訪問,以保證數據的完整性,volatile是修飾變量的修飾符。

1、volatile的使用場景

多個線程同時訪問一個變量,CLR為了效率,允許每個線程進行本地緩存,這就導致了變量的不一致性。volatile就是為了解決這個問題,volatile修飾的變量,不允許線程進行本地緩存,每個線程的讀寫都是直接操作在共享內存上,這就保證了變量始終具有一致性。

2、volatile 關鍵字可應用于以下類型的字段

① 引用類型

② 整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。

③ 具有整數基類型的枚舉類型。

④ 已知為引用類型的泛型類型參數。

⑤ 不能將局部變量聲明為 volatile。

二、C#中lock

1、lock 關鍵字將語句塊標記為臨界區,方法是獲取給定對象的互斥鎖,執行語句,然后釋放該鎖。此語句的形式如下:

 

復制代碼代碼如下:
Object thisLock = new Object();
lock (thisLock)
{
    // Critical code section
}

 

2、lock確保當一個線程位于代碼的臨界區時,另一個線程不進入臨界區。如果其他線程試圖進入鎖定的代碼,則它就會被阻止,直到該對象被釋放。也就是說在用到臨界資源,確保線程可以排隊進入執行臨界區中的方法。

3、lock的使用場景

多個線程同時訪問一個代碼塊,使用lock 修飾該代碼塊,強制多個線程進行排隊,一個接一個的去訪問。

通常,應避免鎖定 public 類型,否則實例將超出代碼的控制范圍。最佳做法是定義 private 對象來鎖定, 或 private static 對象變量來保護所有實例所共有的數據。

希望本文所述對大家的C#程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆河县| 赫章县| 曲松县| 双柏县| 万盛区| 邯郸县| 榆中县| 建昌县| 德令哈市| 镇康县| 武威市| 商都县| 霞浦县| 乳源| 农安县| 张家口市| 泉州市| 赤城县| 札达县| 淄博市| 历史| 英超| 阳原县| 阳曲县| 甘泉县| 汾阳市| 黔江区| 揭阳市| 峨眉山市| 孟连| 新营市| 城步| 唐河县| 龙口市| 千阳县| 深州市| 潼南县| 香格里拉县| 杨浦区| 监利县| 宜良县|