zoukankan      html  css  js  c++  java
  • c#线程--生产者和消费者

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Security;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleApp
    {
        class Test
        {
    
            static void Main()
            {
                product pro = new product();
                setProduct set = new setProduct(pro, 100);
                getProduct get = new getProduct(pro, 100);
    
                Thread producer = new Thread(new ThreadStart(set.run));
                Thread consumer = new Thread(new ThreadStart(get.run));
                producer.Start();
                consumer.Start();
                Console.ReadLine();
            }
        }
    
        class getProduct
        {
            private product pro;
            private int quality = 0;
            public getProduct(product pro,int request)
            {
                this.pro = pro;
                quality = request;
            }
            public void run()
            {
                for (int i = 0; i < quality; i++)
                {
                    pro.getProduct();
                }
            }
        }
    
        class setProduct
        {
            private product pro;
            private int quality = 0;
            public setProduct(product pro, int request)
            {
                this.pro = pro;
                quality = request;
            }
            public void run()
            {
                for (int i = 0; i < quality; i++)
                {
                    pro.setProduct(i);
                }
            } 
        }
    
        class product
        {
            private int cellContents;
            private bool setflage = false;
            public int setProduct(int n)
            {
                lock (this)
                {
                    if (setflage)
                    {
                            Monitor.Wait(this);
                    }
                    Console.WriteLine("生产中。。。"+n);
                    cellContents = n;
                    setflage = true;
                    Monitor.Pulse(this);
                }
                return cellContents;
            }
            public void getProduct()
            {
                lock (this)
                {
                    if (!setflage)
                    {
                       Monitor.Wait(this);
                    }
                    Console.WriteLine("消耗中。。。" + cellContents);
                    setflage = false;
                    Monitor.Pulse(this);
                }
            }
        }
    }
    View Code
  • 相关阅读:
    【HDOJ】2267 How Many People Can Survive
    【HDOJ】2268 How To Use The Car
    【HDOJ】2266 How Many Equations Can You Find
    【POJ】2278 DNA Sequence
    【ZOJ】3430 Detect the Virus
    【HDOJ】2896 病毒侵袭
    求奇数的乘积
    平方和与立方和
    求数列的和
    水仙花数
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/3184315.html
Copyright © 2011-2022 走看看