成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# WiteOne學習筆記

開發(fā) 后端
本文介紹C# WiteOne的作用是"阻塞當前線程,提供對該線程的原子操作"也就是說當一個線程遇到C# WiteOne的時候,如果在WiteOne里面沒有線程在操作,則此線程進去操作而里面有線程的時候。

具體的需求是 在某一時間點,只有N個線程在并發(fā)執(zhí)行,如果有多余的線程,則排隊等候~ 還真是費盡心思啊~最終還是被我攻克了,下面我就來說說具體的實現(xiàn) :

C#提供了Mutex與Interlocked這兩個與線程相關(guān)的類,都在Threading命名空間下! Mutex中提供了WiteOne,ReleaseMutex 兩個實例方法:C# WiteOne的作用是"阻塞當前線程,提供對該線程的原子操作"也就是說當一個線程遇到C# WiteOne的時候,如果在WiteOne里面沒有線程在操作,則此線程進去操作而里面有線程的時候,所有到此的線程均需要排隊等候里面的線程執(zhí)行完畢而控制這樣操作的結(jié)束標記就是使用ReleaseMutex 方法!

就好比C# WiteOne是一把鎖一樣~而ReleaseMutex 就是一把鑰匙當10個人都看到這個門的時候,***個到達門口的人會看到屋子里沒有人,則他進去,同時會把門鎖上后面的人自然要在門口等候,當此人在屋子里執(zhí)行完任務(wù)后他會用鑰匙把門打開! 出去后把鎖交給門口排隊的第二位同志,第二位同志再做同樣的操作如果***位同志執(zhí)行完任務(wù)以后不把使用權(quán)交給第二個人的話,而直接退出那么屋子自然就空了下來,而門還是鎖的~不必擔心~門會自動打開,只要是前一個人已經(jīng)不在屋子里即可~

然后再來說說這個Interlocked,官方說明是"對一個變量進行原子操作進行遞增或者遞減然后保存" 原子操作的概念就是,有且只有一個線程在對此變量進行操作~不準其他線程干預的操作 當對一個變量進行原子操作的時候,此變量就會加鎖,而其他線程是無法訪問的,只能掛起等候此變量解鎖 我感覺實際上使用的也就是Mutex來實現(xiàn)的

  1. public class MutexTest{  
  2. private static int poolFlag = 0 ;//標記  
  3. private const int amountThread = 10 ;//線程總量  
  4. private const int maxThread = 3 ;//可執(zhí)行線程***數(shù)量  
  5. private static Mutex muxConsole = new Mutex() ;  
  6. public static void Main(){  
  7. for ( int i = 0 ;i <amountThread ;i ++ ){  
  8. // 創(chuàng)建指定數(shù)量的線程  
  9. // 是線程調(diào)用Run方法  
  10. // 啟動線程  
  11. Thread trd = new Thread( new ThreadStart( Run ) ) ;  
  12. trd.Name = "線程" + i ;  
  13. trd.Start() ;  
  14. }  
  15. }  
  16. public static void Run()  
  17. muxConsole.WaitOne(); //阻塞隊列  
  18. Interlocked.Increment(ref poolFlag) ;//標記+1  
  19. if (poolFlag != maxThread) //判斷是否等于上限  
  20. muxConsole.ReleaseMutex(); //如果此線程達不到可執(zhí)行線程上限,則繼續(xù)開通,讓后面的線程進來  
  21. Console.WriteLine( "{0} 正在運行...... ", Thread.CurrentThread.Name ) ;  
  22. Thread.Sleep( 5000 ); //模擬執(zhí)行  
  23. Console.WriteLine( "{0} 已經(jīng)中止...... ", Thread.CurrentThread.Name ) ;  
  24. //標記-1  
  25. Interlocked.Decrement(ref poolFlag) ;  
  26. }  

以上介紹C# WiteOne

【編輯推薦】

  1. C#數(shù)據(jù)庫查詢和操作大全
  2. 淺析C#擴展方法
  3. C# Singleton的使用及優(yōu)缺點探討
  4. 詳細分析C#數(shù)據(jù)庫連接池
  5. C#數(shù)據(jù)庫備份及還原的實現(xiàn)代碼
責任編輯:佚名 來源: cnblogs
相關(guān)推薦

2009-08-13 18:21:52

C#學習筆記

2009-08-20 15:02:57

C# If語句

2009-08-12 15:50:40

C# ListBox

2009-08-24 15:46:46

C# SmartPho

2009-08-26 10:48:44

C# SQL命令

2009-08-31 15:27:33

C# TreeView

2009-08-21 17:53:28

C#查詢結(jié)果

2009-08-24 14:30:49

C# WMI封裝

2009-08-25 15:26:03

C#調(diào)用ImOK

2009-08-12 10:46:54

C#命名空間

2009-08-14 15:54:12

C#編程語言

2009-09-01 11:28:32

C#使用函數(shù)重載

2009-08-19 15:59:24

C#參數(shù)類型

2009-08-14 17:38:08

C#改寫方法

2009-08-13 11:10:32

C#基礎(chǔ)概念

2009-08-27 16:53:01

C#委托C#事件

2009-08-13 10:47:29

C#創(chuàng)建驗證碼

2009-09-04 10:49:19

C#隱式轉(zhuǎn)換

2009-08-26 16:17:23

C# Lambda表達

2009-08-27 11:16:40

C# sealed修飾
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩欧美中文在线 | 久久一二区 | 91视频在线| 久久精品国产免费高清 | 国产中文一区二区三区 | 精品九九 | 色欧美片视频在线观看 | 人人操日日干 | 日韩欧美高清dvd碟片 | 日韩中文字幕一区二区 | 黄视频免费 | 亚洲久久久| 久久久久久久久淑女av国产精品 | 粉嫩在线 | 日日草天天干 | 久久久久亚洲 | 做a视频 | 在线看日韩 | 午夜小影院 | 成人九色 | 欧美激情一区二区三级高清视频 | 蜜桃视频在线观看免费视频网站www | www一级片 | 成人三级视频 | 北条麻妃一区二区三区在线视频 | 久久在视频 | 91大神在线资源观看无广告 | 欧美成年人| 国产精品精品久久久 | 国产精品不卡 | 理论片午午伦夜理片影院 | 国产午夜精品一区二区三区嫩草 | 国产精品久久久久久婷婷天堂 | 国产色网站| 特级黄色毛片 | 欧美色视频免费 | 手机三级电影 | 日韩免费视频一区二区 | 9999国产精品欧美久久久久久 | 欧美日韩一区二区电影 | 综合久久综合久久 |