VS实现生产者消费者问题
时间: 2024-01-28 16:12:51 浏览: 75
在Visual Studio中实现生产者消费者问题可以使用多线程和同步机制来实现。下面是一个简单的示例代码:
```csharp
using System;
using System.Collections.Generic;
using System.Threading;
class Program
{
static Queue<int> buffer = new Queue<int>();
static int bufferSize = 5;
static object lockObj = new object();
static void Main(string[] args)
{
Thread producerThread = new Thread(Producer);
Thread consumerThread = new Thread(Consumer);
producerThread.Start();
consumerThread.Start();
producerThread.Join();
consumerThread.Join();
}
static void Producer()
{
for (int i = 0; i < 10; i++)
{
lock (lockObj)
{
while (buffer.Count >= bufferSize)
{
Monitor.Wait(lockObj);
}
buffer.Enqueue(i);
Console.WriteLine("Produced: " + i);
Monitor.PulseAll(lockObj);
}
Thread.Sleep(100); // 模拟生产过程中的延迟
}
}
static void Consumer()
{
for (int i = 0; i < 10; i++)
{
lock (lockObj)
{
while (buffer.Count == 0)
{
Monitor.Wait(lockObj);
}
int item = buffer.Dequeue();
Console.WriteLine("Consumed: " + item);
Monitor.PulseAll(lockObj);
}
Thread.Sleep(200); // 模拟消费过程中的延迟
}
}
}
```
这个示例代码使用了一个队列作为缓冲区,生产者线程向缓冲区中添加数据,消费者线程从缓冲区中取出数据。通过使用`lock`关键字和`Monitor`类的`Wait`和`PulseAll`方法来实现线程的同步和互斥。
阅读全文