Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Threading;
  7.  
  8. namespace Zad2
  9. {
  10. class Program
  11. {
  12. public static Semaphore wazenie;
  13. public static Semaphore okulista;
  14. public static Semaphore internista;
  15.  
  16. public static int czasBadania = 200;
  17.  
  18. static void Main(string[] args)
  19. {
  20. wazenie = new Semaphore(0, 3);
  21. okulista = new Semaphore(0, 2);
  22. internista = new Semaphore(0, 1);
  23.  
  24. Thread[] soldiers = new Thread[50];
  25.  
  26. for (int i = 0; i < soldiers.Length; i++)
  27. {
  28. soldiers[i] = new Thread(new ThreadStart(wykonajBadania));
  29. soldiers[i].Name = "Zolnierz nr " + (i + 1);
  30. }
  31.  
  32. foreach (Thread t in soldiers)
  33. t.Start();
  34.  
  35. wazenie.Release(3);
  36. okulista.Release(2);
  37. internista.Release(1);
  38.  
  39. Console.ReadKey();
  40.  
  41. }
  42.  
  43. public static void wykonajBadania()
  44. {
  45. wazenie.WaitOne();
  46. Console.WriteLine("Żołnierz {0} rozpoczyna ważenie", Thread.CurrentThread.Name);
  47. Thread.Sleep(czasBadania);
  48. Console.WriteLine("Żołnierz {0} kończy ważenie", Thread.CurrentThread.Name);
  49. wazenie.Release();
  50.  
  51. okulista.WaitOne();
  52. Console.WriteLine("Żołnierz {0} rozpoczyna okulistę", Thread.CurrentThread.Name);
  53. Thread.Sleep(czasBadania);
  54. Console.WriteLine("Żołnierz {0} kończy okulistę", Thread.CurrentThread.Name);
  55. okulista.Release();
  56.  
  57. internista.WaitOne();
  58. Console.WriteLine("Żołnierz {0} rozpoczyna internistę", Thread.CurrentThread.Name);
  59. Thread.Sleep(czasBadania);
  60. Console.WriteLine("Żołnierz {0} kończy internistę", Thread.CurrentThread.Name);
  61. internista.Release();
  62. }
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement