我想了解比赛条件的工作原理。具体在这个例子中。该程序的结果是最大值,即20万或小于该值(例如15万)。所以我的问题是,当结果小于20万时,它停止计数,它是如何工作的,以及逐步显示的样子。我认为,如果我能在示例中理解这一点,则可以帮助我理解有关多线程的一般概念。预先感谢!
using System;
using System.Threading;
class Kontekst
{
public double x = 0.0;
};
class Watek
{
public Kontekst kon;
public int num;
public Watek(Kontekst kon_, int num_)
{
kon = kon_;
num = num_;
}
public void Dzialanie()
{
Console.WriteLine("Watek " + num);
for (int i = 0; i < 100000; ++i) kon.x += 1.0;
}
};
public class SemaforyPrzyklad
{
public static void Main(string[] args)
{
Kontekst kon = new Kontekst();
Watek w1 = new Watek(kon, 1);
Watek w2 = new Watek(kon, 2);
Thread watek1 = new Thread(w1.Dzialanie);
Thread watek2 = new Thread(w2.Dzialanie);
watek1.Start();
watek2.Start();
watek1.Join();
watek2.Join();
Console.WriteLine("x = " + kon.x);
Console.ReadKey();
}
}
如果您还没有,请阅读What is a race condition?的答案。