我正在尝试在C#中开始使用多线程。我正在尝试编写一个带有两个线程的程序 - 给定一个数字n,一个线程将打印所有偶数到n,另一个线程将打印所有奇数。我试图让这两个线程使用Monitor同步,以便它们按顺序打印数字。
以下是我到目前为止所遇到的问题,它遇到了僵局。我该如何纠正?另外,请帮助我了解发送到Pulse和Wait的对象的意义是什么?我无法从文档中理解。
class NumPrint
{
public Thread other{get; set;}
int first, max;
public NumPrint(int first, int max, bool thisFlag)
{
this.first = first;
this.max = max;
}
public void DoWork()
{
for (int i = first; i <= max; i+=2)
{
Console.WriteLine(i);
lock (this)
{
Monitor.Pulse(this);
}
lock (other)
{
Monitor.Wait(other);
}
}
}
}
class Program
{
static void Main(string[] args)
{
NumPrint odd = new NumPrint(1, 10,false);
NumPrint even = new NumPrint(2, 10, true);
Thread oddThread = new Thread(new ThreadStart(odd.DoWork));
Thread evenThread = new Thread(new ThreadStart(even.DoWork));
odd.other = evenThread;
even.other = oddThread;
oddThread.Start();
evenThread.Start();
oddThread.Join();
evenThread.Join();
}
}
答案 0 :(得分:0)