知识大全 C#多线程学习—生产者和消费者(3)
Posted 生产者
篇首语:送饥者一条鱼,只管一天不饿;教他学会捕鱼,能使他永不受饿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#多线程学习—生产者和消费者(3)相关的知识,希望对你有一定的参考价值。
C#多线程学习—生产者和消费者(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
下面定义生产者类 CellProd 和消费者类 CellCons 它们都只有一个方法ThreadRun() 以便在Main()函数中提供给线程的ThreadStart代理对象 作为线程的入口
public class CellProd Cell cell; // 被操作的Cell对象 int quantity = ; // 生产者生产次数 初始化为
public CellProd(Cell box int request) //构造函数 cell = box; quantity = request; public void ThreadRun( ) for(int looper= ; looper<=quantity; looper++) cell WriteToCell(looper); //生产者向操作对象写入信息
public class CellCons Cell cell; int quantity = ;
public CellCons(Cell box int request) //构造函数 cell = box; quantity = request; public void ThreadRun( ) int valReturned; for(int looper= ; looper<=quantity; looper++) valReturned=cell ReadFromCell( );//消费者从操作对象中读取信息
然后在下面这个类MonitorSample的Main()函数中 我们要做的就是创建两个线程分别作为生产者和消费者 使用CellProd ThreadRun()方法和CellCons ThreadRun()方法对同一个Cell对象进行操作
public class MonitorSample public static void Main(String[] args) int result = ; //一个标志位 如果是 表示程序没有出错 如果是 表明有错误发生 Cell cell = new Cell( );
//下面使用cell初始化CellProd和CellCons两个类 生产和消费次数均为 次 CellProd prod = new CellProd(cell ); CellCons cons = new CellCons(cell );
Thread producer = new Thread(new ThreadStart(prod ThreadRun)); Thread consumer = new Thread(new ThreadStart(cons ThreadRun)); //生产者线程和消费者线程都已经被创建 但是没有开始执行 try producer Start( ); consumer Start( );
producer Join( ); consumer Join( ); Console ReadLine(); catch (ThreadStateException e) //当线程因为所处状态的原因而不能执行被请求的操作 Console WriteLine(e); result = ; catch (ThreadInterruptedException e) //当线程在等待状态的时候中止 Console WriteLine(e); result = ; //尽管Main()函数没有返回值 但下面这条语句可以向父进程返回执行结果 Environment ExitCode = result;
在上面的例程中 同步是通过等待Monitor Pulse()来完成的 首先生产者生产了一个值 而同一时刻消费者处于等待状态 直到收到生产者的 脉冲(Pulse) 通知它生产已经完成 此后消费者进入消费状态 而生产者开始等待消费者完成操作后将调用Monitor Pulese()发出的 脉冲
它的执行结果很简单
Produce Consume Produce Consume Produce Consume ……
Produce Consume
cha138/Article/program/net/201311/15265相关参考
C#多线程学习—生产者和消费者(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
Java多线程--生产者与消费者 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 模拟生产者与消费
由生产者/消费者问题看JAVA多线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 生产者消费者
/*@authorshijin*生产者与消费者模型中要保证以下几点*同一时间内只能有一个生产者生产 生产方法加锁sychronized*同一时间内只能
Java多线程例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 写出一组模拟生产者/消费者的协
C#创建多线程应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在NET和C#中编写一个多
C#多线程编程实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题的提出 所谓单个写入程序
详细讲解C#的多线程能力 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 线程是允许进行并行计算的
C#多线程中lock的用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 经常碰到同时需要对某个
C#中构建多线程应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 引言 随着双核四核等多