Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Threading;
- namespace Zad2
- {
- class Program
- {
- public static Semaphore wazenie;
- public static Semaphore okulista;
- public static Semaphore internista;
- public static int czasBadania = 200;
- static void Main(string[] args)
- {
- wazenie = new Semaphore(0, 3);
- okulista = new Semaphore(0, 2);
- internista = new Semaphore(0, 1);
- Thread[] soldiers = new Thread[50];
- for (int i = 0; i < soldiers.Length; i++)
- {
- soldiers[i] = new Thread(new ThreadStart(wykonajBadania));
- soldiers[i].Name = "Zolnierz nr " + (i + 1);
- }
- foreach (Thread t in soldiers)
- t.Start();
- wazenie.Release(3);
- okulista.Release(2);
- internista.Release(1);
- Console.ReadKey();
- }
- public static void wykonajBadania()
- {
- wazenie.WaitOne();
- Console.WriteLine("Żołnierz {0} rozpoczyna ważenie", Thread.CurrentThread.Name);
- Thread.Sleep(czasBadania);
- Console.WriteLine("Żołnierz {0} kończy ważenie", Thread.CurrentThread.Name);
- wazenie.Release();
- okulista.WaitOne();
- Console.WriteLine("Żołnierz {0} rozpoczyna okulistę", Thread.CurrentThread.Name);
- Thread.Sleep(czasBadania);
- Console.WriteLine("Żołnierz {0} kończy okulistę", Thread.CurrentThread.Name);
- okulista.Release();
- internista.WaitOne();
- Console.WriteLine("Żołnierz {0} rozpoczyna internistę", Thread.CurrentThread.Name);
- Thread.Sleep(czasBadania);
- Console.WriteLine("Żołnierz {0} kończy internistę", Thread.CurrentThread.Name);
- internista.Release();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement