public static Atomicity StartAtomicity(this Atomicity atomicity)
        {
            Console.WriteLine("'StartAtomicity' method started\n");
            var bob = new Thread(() =>
            {
                atomicity.GetBanner = new BigBanner("Wash", "The", "Dog");
            });

            var alice = new Thread(() =>
            {
                for (int i = 0; i < 5; ++i)
                {
                    string a, b, c;
                    a = atomicity.GetBanner.slot1;
                    Thread.Sleep(200);
                    b = atomicity.GetBanner.slot2;
                    Thread.Sleep(200);
                    c = atomicity.GetBanner.slot3;
                    Thread.Sleep(200);

                    Console.WriteLine($"Banner in atomic state: {a} {b} {c}");
                }
            });

            alice.Start();
            Thread.Sleep(300);
            bob.Start();
            bob.Join();
            alice.Join();

            Console.WriteLine("\n'StartAtomicity' method finished\n\n");
            return(atomicity);
        }
예제 #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Race Condition\n");
            RaceCondition raceCondition = new RaceCondition();

            raceCondition.Explanation();

            int retryCount = 3; // retry count for execution RaceCondition

            raceCondition.RetryCount(retryCount, () =>
            {
                raceCondition.StartRaceCondition()
                .ShowResult();
            });

            Console.WriteLine(Environment.NewLine);

            Console.WriteLine("Atomicity\n");
            Atomicity atomicity = new Atomicity();

            atomicity.StartAtomicity()
            .Reset()
            .StartAtomicityWithLockInstance();
        }
 public static Atomicity Reset(this Atomicity atomicity)
 {
     atomicity = new Atomicity();
     return(atomicity);
 }