您的位置:首页 > 编程语言 > C#

c#线程--生产者和消费者

2013-07-11 17:05 155 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: