欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中volatile與lock用法

 更新時(shí)間:2014年10月28日 14:28:52   投稿:shichen2014  
這篇文章主要介紹了C#中volatile與lock用法,較為詳細(xì)的分析了C#中volatile與lock的適用情況及用法實(shí)例,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

一、C#中volatile

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

1、volatile的使用場(chǎng)景

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

2、volatile 關(guān)鍵字可應(yīng)用于以下類型的字段

① 引用類型

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

③ 具有整數(shù)基類型的枚舉類型。

④ 已知為引用類型的泛型類型參數(shù)。

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

二、C#中l(wèi)ock

1、lock 關(guān)鍵字將語句塊標(biāo)記為臨界區(qū),方法是獲取給定對(duì)象的互斥鎖,執(zhí)行語句,然后釋放該鎖。此語句的形式如下:

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

2、lock確保當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線程不進(jìn)入臨界區(qū)。如果其他線程試圖進(jìn)入鎖定的代碼,則它就會(huì)被阻止,直到該對(duì)象被釋放。也就是說在用到臨界資源,確保線程可以排隊(duì)進(jìn)入執(zhí)行臨界區(qū)中的方法。

3、lock的使用場(chǎng)景

多個(gè)線程同時(shí)訪問一個(gè)代碼塊,使用lock 修飾該代碼塊,強(qiáng)制多個(gè)線程進(jìn)行排隊(duì),一個(gè)接一個(gè)的去訪問。

通常,應(yīng)避免鎖定 public 類型,否則實(shí)例將超出代碼的控制范圍。最佳做法是定義 private 對(duì)象來鎖定, 或 private static 對(duì)象變量來保護(hù)所有實(shí)例所共有的數(shù)據(jù)。

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解

    C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解

    這篇文章主要介紹了C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解的相關(guān)資料,這里提供代碼實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下
    2016-12-12
  • C#遍歷子目錄的方法

    C#遍歷子目錄的方法

    這篇文章主要介紹了C#遍歷子目錄的方法,涉及C#針對(duì)目錄操作的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#使用HttpPost請(qǐng)求調(diào)用WebService的方法

    C#使用HttpPost請(qǐng)求調(diào)用WebService的方法

    這篇文章主要為大家詳細(xì)介紹了C#使用HttpPost請(qǐng)求調(diào)用WebService的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C# Volatile的具體使用

    C# Volatile的具體使用

    本文主要介紹了C# Volatile的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C#自定義控件實(shí)現(xiàn)TextBox禁止粘貼的方法

    C#自定義控件實(shí)現(xiàn)TextBox禁止粘貼的方法

    這篇文章主要介紹了C#自定義控件實(shí)現(xiàn)TextBox禁止粘貼的方法,結(jié)合具體實(shí)例形式分析了C#自定義控件的創(chuàng)建、使用方法及TextBox禁止粘貼的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • C# 拓展方法的簡(jiǎn)單實(shí)例

    C# 拓展方法的簡(jiǎn)單實(shí)例

    這篇文章介紹了C# 拓展方法的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-08-08
  • C#如何快速釋放內(nèi)存的大數(shù)組詳解

    C#如何快速釋放內(nèi)存的大數(shù)組詳解

    這篇文章主要給大家介紹了關(guān)于C#如何快速釋放內(nèi)存的大數(shù)組的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C# 裝箱和拆箱的知識(shí)回顧

    C# 裝箱和拆箱的知識(shí)回顧

    本篇文章主要介紹了C#的裝箱和拆箱的知識(shí)點(diǎn)回顧,對(duì)大家的學(xué)習(xí)和復(fù)習(xí)具有很好的參考價(jià)值,需要的朋友一起來看下吧
    2016-12-12
  • C# 設(shè)計(jì)模式系列教程-代理模式

    C# 設(shè)計(jì)模式系列教程-代理模式

    代理模式對(duì)客戶端來說,隱藏了真實(shí)對(duì)象的細(xì)節(jié)及復(fù)雜性,實(shí)現(xiàn)了客戶端(調(diào)用者)與真實(shí)對(duì)象的松耦合,提高了運(yùn)行速度。
    2016-06-06
  • webBrowser執(zhí)行js的方法,并返回值,c#后臺(tái)取值的實(shí)現(xiàn)

    webBrowser執(zhí)行js的方法,并返回值,c#后臺(tái)取值的實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄獁ebBrowser執(zhí)行js的方法,并返回值,c#后臺(tái)取值的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12

最新評(píng)論