usemonitor.cs
来自「vc的原码例子12 vc的原码例子12」· CS 代码 · 共 63 行
CS
63 行
using System;
using System.Threading;
public class LockDemo
{
class buffer
{
public static int item = 0;
public static bool empty = true;
public static object BufferLock = new Object();
}
public static void Producer()
{
int value = 0;
do
{
Monitor.Enter(buffer.BufferLock);
if (buffer.empty)
{
buffer.empty = false;
buffer.item = value;
value = (value == 1) ? 0: 1;
Console.WriteLine("P: {0}", buffer.item);
}
Monitor.Exit(buffer.BufferLock);
} while (true);
}
public static void Consumer()
{
int value;
do
{
Monitor.Enter(buffer.BufferLock);
if (! buffer.empty)
{
buffer.empty = true;
Thread.Sleep(500);
value = buffer.item;
Console.WriteLine("C: {0}", value);
}
Monitor.Exit(buffer.BufferLock);
} while (true);
}
public static void Main()
{
ThreadStart produce = new ThreadStart(Producer);
ThreadStart consume = new ThreadStart(Consumer);
Thread ProducerThread = new Thread(produce);
Thread ConsumerThread = new Thread(consume);
ProducerThread.Start();
ConsumerThread.Start();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?