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

C#生產(chǎn)者和消費(fèi)者

開發(fā) 后端
本文介紹定義C#生產(chǎn)者和消費(fèi)者,它們都只有一個(gè)方法ThreadRun(),以便在Main()函數(shù)中提供給線程的ThreadStart代理對象,作為線程的入口。

下面定義C#生產(chǎn)者和消費(fèi)者,它們都只有一個(gè)方法ThreadRun(),以便在Main()函數(shù)中提供給線程的ThreadStart代理對象,作為線程的入口。

  1. public class CellProd  
  2. {  
  3. Cell cell; // 被操作的Cell對象  
  4. int quantity = 1; // 生產(chǎn)者生產(chǎn)次數(shù),初始化為1  
  5.  
  6. public CellProd(Cell box, int request)  
  7. {  
  8. //構(gòu)造函數(shù)  
  9. cell = box;  
  10. quantity = request;  
  11. }  
  12. public void ThreadRun( )  
  13. {  
  14. for(int looper=1; looper<=quantity; looper++)  
  15. cell.WriteToCell(looper); //生產(chǎn)者向操作對象寫入信息  
  16. }  
  17. }  
  18.  
  19. public class CellCons  
  20. {  
  21. Cell cell;  
  22. int quantity = 1;  
  23.  
  24. public CellCons(Cell box, int request)  
  25. {  
  26. //構(gòu)造函數(shù)  
  27. cell = box;  
  28. quantity = request;  
  29. }  
  30. public void ThreadRun( )  
  31. {  
  32. int valReturned;  
  33. for(int looper=1; looper<=quantity; looper++)  
  34. valReturned=cell.ReadFromCell( );//消費(fèi)者從操作對象中讀取信息  
  35. }  

然后在下面這個(gè)類MonitorSample的Main()函數(shù)中,我們要做的就是創(chuàng)建兩個(gè)線程分別作為C#生產(chǎn)者和消費(fèi)者,使用CellProd.ThreadRun()方法和CellCons.ThreadRun()方法對同一個(gè)Cell對象進(jìn)行操作

  1. public class MonitorSample  
  2. {  
  3. public static void Main(String[] args)  
  4. {  
  5. int result = 0;   
  6. //一個(gè)標(biāo)志位,如果是0表示程序沒有出錯(cuò),如果是1表明有錯(cuò)誤發(fā)生  
  7. Cell cell = new Cell( );  
  8.  
  9. //下面使用cell初始化CellProd和CellCons兩個(gè)類,生產(chǎn)和消費(fèi)次數(shù)均為20次  
  10. CellProd prod = new CellProd(cell, 20);  
  11. CellCons cons = new CellCons(cell, 20);  
  12.  
  13. Thread producer = new Thread(new ThreadStart(prod.ThreadRun));  
  14. Thread consumer = new Thread(new ThreadStart(cons.ThreadRun));  
  15. //生產(chǎn)者線程和消費(fèi)者線程都已經(jīng)被創(chuàng)建,但是沒有開始執(zhí)行  
  16. try  
  17. {  
  18. producer.Start( );  
  19. consumer.Start( );  
  20.  
  21. producer.Join( );  
  22. consumer.Join( );  
  23. Console.ReadLine();  
  24. }  
  25. catch (ThreadStateException e)  
  26. {  
  27. //當(dāng)線程因?yàn)樗帬顟B(tài)的原因而不能執(zhí)行被請求的操作  
  28. Console.WriteLine(e);  
  29. result = 1;  
  30. }  
  31. catch (ThreadInterruptedException e)  
  32. {  
  33. //當(dāng)線程在等待狀態(tài)的時(shí)候中止  
  34. Console.WriteLine(e);  
  35. result = 1;  
  36. }  
  37. //盡管Main()函數(shù)沒有返回值,但下面這條語句可以向父進(jìn)程返回執(zhí)行結(jié)果  
  38. Environment.ExitCode = result;  
  39. }  

在上面的例程中,同步是通過等待Monitor.Pulse()來完成的。首先生產(chǎn)者生產(chǎn)了一個(gè)值,而同一時(shí)刻消費(fèi)者處于等待狀態(tài),直到收到生產(chǎn)者的“脈沖(Pulse)”通知它生產(chǎn)已經(jīng)完成,此后消費(fèi)者進(jìn)入消費(fèi)狀態(tài),而生產(chǎn)者開始等待消費(fèi)者完成操作后將調(diào)用Monitor.Pulese()發(fā)出的“脈沖 ”。

事實(shí)上,這個(gè)簡單的例子已經(jīng)幫助我們解決了多線程應(yīng)用程序中可能出現(xiàn)的大問題,只要領(lǐng)悟了解決線程間沖突的基本方法,很容易把它應(yīng)用到比較復(fù)雜的程序中去。以上介紹C#生產(chǎn)者和消費(fèi)者。

【編輯推薦】

  1. C#結(jié)構(gòu)體的特點(diǎn)淺析
  2. 介紹C#窗體拖動(dòng)事件
  3. C#讀取Excel遇到無法讀取的解決方法
  4. 概述C#.NET操作XML
  5. C#基礎(chǔ)概念學(xué)習(xí)筆記
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2015-08-26 09:39:30

java消費(fèi)者

2021-12-22 11:00:05

模型Golang語言

2024-10-11 09:27:52

2024-03-14 11:58:43

2012-02-14 12:31:27

Java

2017-05-16 12:30:21

Python多線程生產(chǎn)者消費(fèi)者模式

2021-08-31 10:26:24

存儲(chǔ)

2021-04-20 08:32:51

消息MQ隊(duì)列

2024-08-27 10:19:31

2021-12-28 12:01:59

Kafka 消費(fèi)者機(jī)制

2020-09-14 08:45:58

多線程模型面試

2023-06-01 08:08:38

kafka消費(fèi)者分區(qū)策略

2015-06-15 11:29:34

數(shù)據(jù)中心綠色數(shù)據(jù)中心

2011-08-05 16:21:24

2011-07-22 16:25:38

CA TechnoloIT消費(fèi)化

2022-07-07 09:00:49

RocketMQ消費(fèi)者消息消費(fèi)

2011-11-15 10:05:29

Kindle Fire平板市場

2015-06-29 15:00:20

云端數(shù)據(jù)消費(fèi)者

2014-12-10 21:50:44

AdMaster

2021-10-26 10:50:25

Kafkabroker
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 久久久久久久久久久久一区二区 | 国产精品久久久久久中文字 | 免费的av网站| 91亚洲一区| 亚洲精品国产a久久久久久 午夜影院网站 | 国产日韩欧美在线观看 | 中文字幕在线观看视频一区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 欧美精品成人一区二区三区四区 | 久久久www成人免费精品 | 九九精品在线 | 欧美日本一区 | 欧美精品一区二区三区蜜桃视频 | 久久99精品久久 | 亚洲精品1区 | av一级| 精品亚洲一区二区三区四区五区 | 久久av一区二区三区 | 美女视频三区 | 欧美久久一区 | 日本网站免费观看 | 成人免费淫片aa视频免费 | 日韩视频在线观看 | 国产久| 欧美成人精品一区 | 亚洲福利av| 不卡一区二区三区四区 | h在线看 | 久久精品久久精品久久精品 | 一区二区三区在线电影 | 黄色大片免费观看 | 国产精品毛片一区二区三区 | 欧美精品在线一区二区三区 | 精品九九九 | 中文字幕精品一区二区三区精品 | 日韩成人免费 | 久久99国产精品 | 午夜影院免费体验区 | 国产视频亚洲视频 | 欧美日韩第一页 | а天堂中文最新一区二区三区 |