最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Monitor對象與Lock關(guān)鍵字的區(qū)別分析

 更新時(shí)間:2013年06月24日 17:09:56   作者:  
這篇文章主要介紹了C#中Monitor對象與Lock關(guān)鍵字的區(qū)別,需要的朋友可以參考下

Monitor對象

1.Monitor.Enter(object)方法是獲取鎖,Monitor.Exit(object)方法是釋放鎖,這就是Monitor最常用的兩個(gè)方法,當(dāng)然在使用過程中為了避免獲取鎖之后因?yàn)楫惓#骆i無法釋放,所以需要在try{} catch(){}之后的finally{}結(jié)構(gòu)體中釋放鎖(Monitor.Exit())。
2.Monitor的常用屬性和方法:

    Enter(Object) 在指定對象上獲取排他鎖。
    Exit(Object) 釋放指定對象上的排他鎖。
    IsEntered 確定當(dāng)前線程是否保留指定對象鎖。
    Pulse 通知等待隊(duì)列中的線程鎖定對象狀態(tài)的更改。
    PulseAll 通知所有的等待線程對象狀態(tài)的更改。
    TryEnter(Object) 試圖獲取指定對象的排他鎖。
    TryEnter(Object, Boolean) 嘗試獲取指定對象上的排他鎖,并自動設(shè)置一個(gè)值,指示是否得到了該鎖。
    Wait(Object) 釋放對象上的鎖并阻止當(dāng)前線程,直到它重新獲取該鎖。


Lock關(guān)鍵字

1.Lock關(guān)鍵字實(shí)際上是一個(gè)語法糖,它將Monitor對象進(jìn)行封裝,給object加上一個(gè)互斥鎖,A進(jìn)程進(jìn)入此代碼段時(shí),會給object對象加上互斥鎖,此時(shí)其他B進(jìn)程進(jìn)入此代碼段時(shí)檢查object對象是否有鎖?如果有鎖則繼續(xù)等待A進(jìn)程運(yùn)行完該代碼段并且解鎖object對象之后,B進(jìn)程才能夠獲取object對象為其加上鎖,訪問代碼段。

2.Lock關(guān)鍵字封裝的Monitor對象結(jié)構(gòu)如下:

復(fù)制代碼 代碼如下:

            try
            {
                Monitor.Enter(obj);
                dosomething();
            }
            catch(Exception ex)
            {

            }
            finally
            {
                Monitor.Exit(obj);
            }
 
3.鎖定的對象應(yīng)該聲明為private static object obj = new object();盡量別用公共變量和字符串、this、值類型。

Monitor和Lock的區(qū)別

1.Lock是Monitor的語法糖。
2.Lock只能針對引用類型加鎖。
3.Monitor能夠?qū)χ殿愋瓦M(jìn)行加鎖,實(shí)質(zhì)上是Monitor.Enter(object)時(shí)對值類型裝箱。
4.Monitor還有其他的一些功能。

本文代碼示例:

復(fù)制代碼 代碼如下:

    class Program
    {
        private static object obj = new object();
        public void LockSomething()
        {
            lock (obj)
            {
                dosomething();
            }
        }
        public void MonitorSomeThing()
        {
            try
            {
                Monitor.Enter(obj);
                dosomething();
            }
            catch(Exception ex)
            {

            }
            finally
            {
                Monitor.Exit(obj);
            }
        }

        public void dosomething()
        {
            //做具體的事情
        }
    }
   

相關(guān)文章

  • C#控制臺程序中使用官方依賴注入的實(shí)現(xiàn)

    C#控制臺程序中使用官方依賴注入的實(shí)現(xiàn)

    這篇文章主要介紹了C#控制臺程序中使用官方依賴注入的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 在C#里面給PPT文檔添加注釋的實(shí)現(xiàn)代碼

    在C#里面給PPT文檔添加注釋的實(shí)現(xiàn)代碼

    平常開會或者做總結(jié)報(bào)告的時(shí)候我們通常都會用到PowerPoint演示文稿,我們可以在單個(gè)幻燈片或者全部幻燈片里面添加注釋,這樣觀眾可以從注釋內(nèi)容里面獲取更多的相關(guān)信息,需要的朋友可以參考下
    2017-01-01
  • 基于WPF實(shí)現(xiàn)驗(yàn)證碼控件

    基于WPF實(shí)現(xiàn)驗(yàn)證碼控件

    這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)一個(gè)簡單的驗(yàn)證碼控件,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-08-08
  • C#將制定目錄文件名轉(zhuǎn)換成大寫的方法

    C#將制定目錄文件名轉(zhuǎn)換成大寫的方法

    這篇文章主要介紹了C#將制定目錄文件名轉(zhuǎn)換成大寫的方法,涉及C#操作文件及字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#調(diào)用dll報(bào)錯(cuò):無法加載dll,找不到指定模塊的解決

    C#調(diào)用dll報(bào)錯(cuò):無法加載dll,找不到指定模塊的解決

    這篇文章主要介紹了C#調(diào)用dll報(bào)錯(cuò):無法加載dll,找不到指定模塊的解決問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于C# 生成Zip壓縮包代碼

    基于C# 生成Zip壓縮包代碼

    壓縮包制作也是很多項(xiàng)目中需要用到的功能。接下來通過本文給大家介紹基于C# 生成Zip壓縮包代碼,對c生成zip壓縮包相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題

    C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題

    這篇文章主要介紹了C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題 ,文中給大家列舉通過兩種方法來判斷,需要的朋友可以參考下
    2018-10-10
  • C#獲取文件夾所占空間大小的功能

    C#獲取文件夾所占空間大小的功能

    這篇文章介紹了C#獲取文件夾所占空間大小的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#處理XML文件的示例詳解

    C#處理XML文件的示例詳解

    XML是一種標(biāo)記語言,是從標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)中簡化修改出來的,本文主要介紹了C#處理XML文件的相關(guān)知識,有需要的小伙伴可以了解一下
    2024-11-11
  • 一文詳解C#中重寫(override)及覆蓋(new)的區(qū)別

    一文詳解C#中重寫(override)及覆蓋(new)的區(qū)別

    這篇文章主要為大家詳細(xì)介紹了C#中重寫(override)及覆蓋(new)這兩個(gè)關(guān)鍵詞的區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03

最新評論

梧州市| 黑龙江省| 吴旗县| 长乐市| 咸宁市| 梨树县| 怀远县| 宝应县| 湘阴县| 新昌县| 九台市| 同江市| 舟山市| 绵竹市| 荣成市| 浦江县| 哈密市| 新丰县| 营口市| 广元市| 临海市| 酒泉市| 兴化市| 紫金县| 咸阳市| 离岛区| 林口县| 比如县| 股票| 鲁山县| 乌苏市| 金坛市| 济阳县| 南靖县| 西贡区| 博乐市| 沙雅县| 比如县| 泾阳县| 河源市| 天镇县|