C#的多线程机制初探(6)

发表于:2007-06-30来源:作者:点击数: 标签:
然后在下面这个类MonitorSample的Main()函数中我们要做的就是创建两个线程分别作为生产者和消费者,使用CellProd.ThreadRun()方法和CellCons.ThreadRun()方法对同一个Cell对象进行操作。 ??public class MonitorSample ??{ ????public static void M
     然后在下面这个类MonitorSample的Main()函数中我们要做的就是创建两个线程分别作为生产者和消费者,使用CellProd.ThreadRun()方法和CellCons.ThreadRun()方法对同一个Cell对象进行操作。
  
  ??public class MonitorSample
  ??{
  ????public static void Main(String[] args)
  ????{
  ??????int result = 0; //一个标志位,如果是0表示程序没有出错,如果是1表明有错误发生
  ??????Cell cell = new Cell( );
  
  ??????//下面使用cell初始化CellProd和CellCons两个类,生产和消费次数均为20次
  ??????CellProd prod = new CellProd(cell, 20);
  ??????CellCons cons = new CellCons(cell, 20);
  
  ??????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 = 1;
  ??????}
  ??????catch (ThreadInterruptedException e)
  ??????{
  ????????//当线程在等待状态的时候中止
  ????????Console.WriteLine(e);
  ????????result = 1;
  ??????}
  ??????//尽管Main()函数没有返回值,但下面这条语句可以向父进程返回执行结果
  ??????Environment.ExitCode = result;
  ????}
  ??}
  

原文转自:http://www.ltesting.net