Exemple #1
0
        public void Wyw1()
        {
            ThreadExample E1 = new ThreadExample();

            E1.Wyw();
        }
Exemple #2
0
        static void Main(string[] args)
        {
            ThreadExample thread = new ThreadExample();

            thread.Zad1();
            thread.Zad2();
            //Zad 3
            new Thread(thread.Run).Start();
            thread.Run();
            //'*'zostaje wypisana 5 razy ponieważ, zmienna done zostaje zmieniona na true przez jeden z wątków, zatem drugi wątek nie wchodzi do if

            //Zad 4
            new Thread(thread.Run2).Start();
            thread.Run2();
            //wątki współdzielą składową statyczną (wyświetlany x 5 razy)
            new Thread(thread.Run3).Start();
            thread.Run3();
            //w wyniku zmiany funkcji Run2 na Run3 (wyświetlany x 10 razy)
            //Spowodowane jest to tym, że jeden wątek może sprawdzać wartość wyrażenia if, podczas gdy drugi nie zdążył jeszcze zmienić done na true

            //Zad 5
            new Thread(thread.RunLocker).Start();
            thread.RunLocker();
            //Zastosowanie lock gwarantuje, że w danej chwili tylko jeden wątek może nałożyć blokade, a drugi oczekuje na zniesienie blokady

            //Zad 6
            thread.Zad6();
            //Join powoduje wstrzymanie pracy kolejnego wątku do czasu gdy ten pierwszy nie zakończy działania

            //Zad 7
            List <List <int> > m1 = new List <List <int> >()
            {
                new List <int>()
                {
                    1, 1
                }, new List <int>()
                {
                    1, 1
                }
            };
            List <List <int> > m2 = new List <List <int> >()
            {
                new List <int>()
                {
                    2, 2
                }, new List <int>()
                {
                    2, 2
                }
            };
            List <List <int> > m3 = new List <List <int> >()
            {
                new List <int>()
                {
                    3, 3
                }, new List <int>()
                {
                    3, 3
                }
            };
            List <List <int> > m4 = new List <List <int> >()
            {
                new List <int>()
                {
                    4, 4
                }, new List <int>()
                {
                    4, 4
                }
            };
            List <List <int> > m5 = new List <List <int> >()
            {
                new List <int>()
                {
                    5, 5
                }, new List <int>()
                {
                    5, 5
                }
            };

            thread.Zad7(m1, m2, m3, m4, m5);
        }