比赛条件如何正常工作?在给定的示例上逐步解释

问题描述 投票:-1回答:1

我想了解比赛条件的工作原理。具体在这个例子中。该程序的结果是最大值,即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();
    }
}

c# multithreading race-condition
1个回答
0
投票

如果您还没有,请阅读What is a race condition?的答案。

© www.soinside.com 2019 - 2024. All rights reserved.