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
  • 相关阅读:
    github使用
    部署flask
    docker部署路飞学城
    centos7安装dnsmasq局域网dns
    消息队列rabbitmq
    记录腾讯云中矿机病毒处理过程(重装系统了fu*k)
    Golang基础
    git协同开发
    gitlab与pycharm结合
    github与gitlab与git三个基佬的故事
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/3184315.html
Copyright © 2011-2022 走看看