天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

C#多線程學習(三) 生產者和消費者

系列文章導航:

C#多線程學習(一) 多線程的相關概念

C#多線程學習(二) 如何操縱一個線程

C#多線程學習(三) 生產者和消費者

C#多線程學習(四) 多線程的自動管理(線程池)

C#多線程學習(五) 多線程的自動管理(定時器)

C#多線程學習(六) 互斥對象


前面說過,每個線程都有自己的資源,但是代碼區是共享的,即每個線程都可以執行相同的函數。這可能帶來的問題就是幾個線程同時執行一個函數,導致數據的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。

C#提供了一個關鍵字lock,它可以把一段代碼定義為互斥段(critical section),互斥段在一個時刻內只允許一個線程進入執行,而其他線程必須等待。在C#中,關鍵字lock定義如下:

lock(expression) statement_block

expression代表你希望跟蹤的對象,通常是對象引用。

  • 如果你想保護一個類的實例,一般地,你可以使用this;
  • 如果你想保護一個靜態變量(如互斥代碼段在一個靜態方法內部),一般使用類名就可以了。

而statement_block就是互斥段的代碼,這段代碼在一個時刻內只可能被一個線程執行。

下面是一個使用lock關鍵字的典型例子,在注釋里說明了lock關鍵字的用法和用途。

示例如下:

Code

系列文章導航:

C#多線程學習(一) 多線程的相關概念

C#多線程學習(二) 如何操縱一個線程

C#多線程學習(三) 生產者和消費者

C#多線程學習(四) 多線程的自動管理(線程池)

C#多線程學習(五) 多線程的自動管理(定時器)

C#多線程學習(六) 互斥對象


對于任何一個被Monitor鎖定的對象,內存中都保存著與它相關的一些信息:

其一是現在持有鎖的線程的引用;

其二是一個預備隊列,隊列中保存了已經準備好獲取鎖的線程;

其三是一個等待隊列,隊列中保存著當前正在等待這個對象狀態改變的隊列的引用。

當擁有對象鎖的線程準備釋放鎖時,它使用Monitor.Pulse()方法通知等待隊列中的第一個線程,于是該線程被轉移到預備隊列中,當對象鎖被釋放時,在預備隊列中的線程可以立即獲得對象鎖。

下面是一個展示如何使用lock關鍵字和Monitor類來實現線程的同步和通訊的例子,也是一個典型的生產者與消費者問題。

這個例程中,生產者線程和消費者線程是交替進行的,生產者寫入一個數,消費者立即讀取并且顯示(注釋中介紹了該程序的精要所在)。

用到的系統命名空間如下:

using System;

using System.Threading;

首先,定義一個被操作的對象的類Cell,在這個類里,有兩個方法:ReadFromCell()和WriteToCell。消費者線程將調用ReadFromCell()讀取cellContents的內容并且顯示出來,生產者進程將調用WriteToCell()方法向cellContents寫入數據。

示例如下:

Code

NET技術C#多線程學習(三) 生產者和消費者,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲国产在线视频精品 | 成人动漫bt种子 | 欧美xxxxb| 青柠在线观看免费播放电影 | 日本午夜精品一区二区三区电影 | 5580免费午夜福利院 | 色迷迷电影 | 国产AV无码熟妇人妻麻豆 | 最近韩国HD免费观看国语 | 暖暖 视频 免费 高清 在线观看 | 亚洲成AV人电影在线观看 | 97在线免费观看视频 | 国产精品99精品无码视亚 | 高中生被C到爽哭视频免费 高挑人妻无奈张开腿 | 手机在线国产视频 | 免费a视频在线观看 | 国内精品不卡一区二区三区 | 国产一区二区不卡老阿姨 | 婷婷五月久久精品国产亚洲 | 午夜电影三级还珠格格 | 成人在线免费视频观看 | 亚洲欧美日韩精品自拍 | 暖暖免费观看日本在线视频 | 九色PORNY真实丨国产大胸 | 女人操男人 | 国产 精品 亚洲 欧美 高清 | 亚洲精品www久久久久久久软件 | 蜜芽手机在线观看 | 日本熟妇多毛XXXXX视频 | 国产色精品久久人妻99蜜桃麻豆 | 影音先锋亚洲AV少妇熟女 | 4399日本电影完整版在线观看免费 | 抽插内射高潮呻吟爆乳 | 91久久线看在观草草青青 | 亚洲欧美高清在线精品一区 | 麻豆一区二区三区蜜桃免费 | 亚洲成人综合在线 | 国产亚洲精品久久久久小 | 九九免费高清在线观看视频 | 国内精品视频一区二区在线观看 | 偷窥 亚洲 色 国产 日韩 |