2016年1月26日 星期二

C17_9 生產者與消費者問題 MonitorSample.cs

using System;
using System.Threading;
public class MonitorSample
{
    public static void Main()
    {
        //一個標誌為元,如果是 0表示城市沒有出錯,如果是1表示有錯誤發生
        int result = 0;
        Warehouse warehouse = new Warehouse();
        //下面使用warehouse物件初始畫 Producer 和 Consumer兩個類別,生產和消費資數均6次
        Produce prod = new Produce(warehouse, 6);
        Consumer cons = new Consumer(warehouse,6);
        Thread produce = new Thread(new ThreadStart(prod.Threadrun));
        Thread consumer = new Thread(new ThreadStart(cons.ThreadRun));
        //生產者執行緒和消費者執行緒都已經被建立,但是沒有開始執行
        try
        {
            produce.Start();
            consumer.Start();
            produce.Join();
            consumer.Join();
            Console.ReadLine();
        }
        catch(ThreadStartException e)
        {
            //當執行緒因為所處狀態的原因而不能執行被請求的操作
            Console.WriteLine(e);
            result = 1;
        }
        catch(ThreadInterruptedException e)
        {
            //當執行緒在等待狀態的時候終止
            Console.WriteLine(e);
            result = 1;
        }
        //當Main函數沒有回傳直,但下面這條語法可以向父處理序回傳執行結果
        Environment.ExitCode = result;

    }
}

沒有留言: