Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------zadanie 5-----------------------------
- using System;
- using System.Diagnostics;
- using System.Threading;
- namespace zad5
- {
- class Program
- {
- static int liczbaIteracji = 10;
- static int liczbaWatkow = 10;
- static void wyswietlajCos()
- {
- Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
- Random rand = new Random();
- for (int ii = 0; ii < liczbaIteracji; ii++)
- {
- Console.Write("{0}, ", ii); //wyświetl liczbę
- Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
- }
- Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
- }
- static void Th1()
- {
- Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
- var timerH = new Stopwatch();
- timerH.Start();
- Thread[] tabWatTh1 = new Thread[16];
- for(int i = 0; i < 16; i++)
- {
- tabWatTh1[i] = new Thread(new ThreadStart(wyswietlajCos));
- tabWatTh1[i].Name = "W(1) " + i.ToString();
- tabWatTh1[i].Start();
- Thread.SpinWait(100000000);
- tabWatTh1[i].Priority = ThreadPriority.Highest;
- }
- timerH.Stop();
- TimeSpan ts = timerH.Elapsed;
- string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
- Console.WriteLine("Timer(H): " + elapsedTime);
- }
- static void Th2()
- {
- Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime;
- var timerL = new Stopwatch();
- timerL.Start();
- Thread[] tabWatTh2 = new Thread[16];
- for (int i = 0; i < 16; i++)
- {
- tabWatTh2[i] = new Thread(new ThreadStart(wyswietlajCos));
- tabWatTh2[i].Name = "W(2) " + i.ToString();
- tabWatTh2[i].Start();
- Thread.SpinWait(100000000);
- tabWatTh2[i].Priority = ThreadPriority.Lowest;
- }
- timerL.Stop();
- TimeSpan ts = timerL.Elapsed;
- string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
- Console.WriteLine("Timer(L): " + elapsedTime);
- }
- static void Main(string[] args)
- {
- Thread[] tablicaWatkow = new Thread[liczbaWatkow];
- Thread watekH = new Thread(Th1);
- Thread watekL = new Thread(Th2);
- watekH.Start();
- watekL.Start();
- foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
- {
- watekH.Join();
- watekL.Join();
- }
- Console.WriteLine("To już jest koniec, naciśnij ENTER...");
- Console.ReadLine();
- }
- }
- }
- ------------------------zadanie 6-----------------------------------
- using System;
- using System.Threading;
- namespace zad6
- {
- class Program
- {
- static int liczbaIteracji = 10;
- static int liczbaWatkow = 10;
- static object _lock = new object();
- private static readonly object m_oPadlock = new object();
- static void wyswietlajCos()
- {
- Random rand = new Random(Thread.CurrentThread.ManagedThreadId);//inicjuj random numerem wątka
- Thread.Sleep(rand.Next(0, 100));
- Console.WriteLine(Thread.CurrentThread.Name + " zaczyna pisać:");
- Thread.Sleep(100);
- for (int ii = 0; ii < liczbaIteracji; ii++)
- {
- Monitor.Enter(m_oPadlock);
- Console.Write("ala ");
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
- Console.Write("ma ");
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
- Console.WriteLine("kota " + ii);
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 2s
- Monitor.Exit(m_oPadlock);
- }
- Monitor.Enter(m_oPadlock);
- Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać.");
- Monitor.Exit(m_oPadlock);
- }
- static void Main(string[] args)
- {
- Thread[] tablicaWatkow = new Thread[liczbaWatkow];
- for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
- {
- tablicaWatkow[licznik] = new Thread(new ThreadStart(wyswietlajCos));
- tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
- tablicaWatkow[licznik].Start();
- }
- foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
- {
- watek.Join();
- }
- Console.WriteLine("To już jest koniec, naciśnij ENTER...");
- Console.ReadLine();
- }
- }
- }
- -------------------zadanie 3 4--------------------------
- using System;
- using System.Threading;
- class Program
- {
- static int liczbaIteracji = 3;
- static int liczbaWatkow = 3;
- static void wyswietlajCos()
- {
- Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
- Random rand = new Random();
- for (int ii = 0; ii < liczbaIteracji; ii++)
- {
- Console.Write("{0}, ", ii); //wyświetl liczbę
- Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
- }
- Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
- }
- delegate void wyswietlajCosPar(object a);
- static void Main(string[] args)
- {
- wyswietlajCosPar ax =(a) =>{
- Console.WriteLine(Thread.CurrentThread.Name + " zaczyna wyświetlać liczby:");
- Random rand = new Random();
- for (int ii = 0; ii < (int)a; ii++)
- {
- Console.Write("{0}, ", ii); //wyświetl liczbę
- Thread.Sleep(rand.Next(0, 2000)); //wstrzymaj działanie na czas od 0 do 2s
- }
- Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać liczby.");
- };
- Thread[] tablicaWatkow = new Thread[liczbaWatkow];
- for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
- {
- //tablicaWatkow[licznik] = new Thread(new ThreadStart(wyswietlajCos));
- tablicaWatkow[licznik] = new Thread(new ParameterizedThreadStart(ax));
- tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
- tablicaWatkow[licznik].Start(10);
- }
- }
- }
- --------------zadanie 7---------------------------
- using System;
- using System.Threading;
- namespace zad6
- {
- class Program
- {
- static int liczbaIteracji = 10;
- static int liczbaWatkow = 10;
- static object _lock = new object();
- private static readonly object m_oPadlock = new object();
- static void wyswietlajCos()
- {
- Random rand = new Random(Thread.CurrentThread.ManagedThreadId);//inicjuj random numerem wątka
- Thread.Sleep(rand.Next(0, 100));
- Console.WriteLine(Thread.CurrentThread.Name + " zaczyna pisać:");
- Thread.Sleep(100);
- for (int ii = 0; ii < liczbaIteracji; ii++)
- {
- Monitor.Enter(m_oPadlock);
- Console.Write("ala ");
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
- Console.Write("ma ");
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 0,1
- Console.WriteLine("kota " + ii);
- Thread.Sleep(rand.Next(0, 100)); //wstrzymaj działanie na czas od 0 do 2s
- Monitor.Exit(m_oPadlock);
- }
- Monitor.Enter(m_oPadlock);
- Console.WriteLine(Thread.CurrentThread.Name + " zakończył pisać.");
- Monitor.Exit(m_oPadlock);
- }
- static void Main(string[] args)
- {
- Thread[] tablicaWatkow = new Thread[liczbaWatkow];
- for (int licznik = 0; licznik < liczbaWatkow; licznik++) //tworzymy, nadajemy nazwę i uruchamiamy wątki
- {
- tablicaWatkow[licznik] = new Thread(() =>
- {
- Console.WriteLine("Wątek uruchomiony i idzie spać...");
- try
- {
- Thread.Sleep(2000);
- }
- catch (ThreadInterruptedException tiex)
- {
- Console.WriteLine("Złapałem wyjątek ThreadInterruptedException: " + tiex.Message);
- }
- catch (ThreadAbortException taex)
- {
- Console.WriteLine("Złapałem wyjątek ThreadAbortException: " + taex.Message);
- }
- finally
- {
- Console.WriteLine("Wykonuję finally");
- }
- Console.WriteLine("Wątek kończy działanie normalnie");
- });
- tablicaWatkow[licznik].Name = "Wątek nr " + licznik.ToString();
- tablicaWatkow[licznik].Start();
- }
- foreach (Thread watek in tablicaWatkow) //czekamy na wszystkie wątki
- {
- watek.Join();
- }
- Console.WriteLine("To już jest koniec, naciśnij ENTER...");
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement