Advertisement
Guest User

Untitled

a guest
May 27th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.24 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. using System.Diagnostics;
  8.  
  9. namespace ConsoleApp39
  10. {
  11.     class Program
  12.     {
  13.         static SemaphoreSlim semafor1 = new SemaphoreSlim(1);
  14.         static SemaphoreSlim semafor = new SemaphoreSlim(10);
  15.         static SemaphoreSlim semafor2 = new SemaphoreSlim(1);
  16.         static SemaphoreSlim semafor3 = new SemaphoreSlim(1);
  17.        
  18.         static int red1 = 0, red2 = 0, red3 = 0;
  19.         static int brojLjudi = 0;
  20.         static readonly object locker = new object();
  21.  
  22.         static void Dolazak()
  23.         {
  24.             semafor.Wait();
  25.             Console.WriteLine(brojLjudi + " . Klijent dolazi u postu.");
  26.             Thread.Sleep(1000);
  27.             int najmanjired = minimum();
  28.             if (najmanjired == 1)
  29.             {  
  30.                 Salter1();  
  31.             }
  32.             else if (najmanjired == 2)
  33.             {
  34.                 Salter2();
  35.             }
  36.             else
  37.             {
  38.                 Salter3();
  39.             }
  40.             semafor.Release();
  41.         }
  42.  
  43.         static void Salter1()
  44.         {
  45.             lock(locker)
  46.             {
  47.                 red1++;
  48.  
  49.             }
  50.             semafor1.Wait();
  51.             Console.WriteLine("SALTER 1.... Korisnik vrsi uplatu...");
  52.             Thread.Sleep(200);
  53.             Console.WriteLine("ZAVRSIO. IZLAZI IZ POSTE");
  54.            
  55.             semafor1.Release();
  56.             lock(locker)
  57.             {
  58.                 red1--;
  59.  
  60.             }
  61.         }
  62.  
  63.         static void Salter2()
  64.         {
  65.             lock(locker)
  66.             {
  67.                 red2++;
  68.  
  69.             }
  70.             semafor2.Wait();
  71.             Console.WriteLine("SALTER 2.... Korisnik vrsi uplatu...");
  72.             Thread.Sleep(200);
  73.             Console.WriteLine("ZAVRSIO. IZLAZI IZ POSTE");
  74.             semafor2.Release();
  75.             lock(locker)
  76.             {
  77.             red2--;
  78.             }
  79.  
  80.         }
  81.  
  82.         static void Salter3()
  83.         {
  84.             lock(locker)
  85.             {
  86.                 red3++;
  87.  
  88.             }
  89.             semafor3.Wait();
  90.             Console.WriteLine("SALTER 3... Korisnik vrsi uplatu....");
  91.             Thread.Sleep(200);
  92.             semafor3.Release();
  93.             lock (locker)
  94.             {
  95.                 red3--;
  96.  
  97.             }            
  98.         }
  99.         static int minimum()
  100.         {
  101.             if(red1< red2 && red1<red3)
  102.             {
  103.                 return 1;
  104.             }
  105.             else if (red2 < red1 && red2 < red3)
  106.             {
  107.                 return 2;
  108.             }
  109.             else if (red1==red2 && red1==red3 && red2==red3)
  110.             {
  111.                 Random r = new Random();
  112.                 return (r.Next(1, 3));
  113.             }
  114.             else
  115.             {
  116.                 return 3;
  117.             }
  118.         }
  119.  
  120.         static void Main(string[] args)
  121.         {
  122.            
  123.             while(true)
  124.             {
  125.                 Thread posta = new Thread(() => Dolazak());
  126.                 posta.Start();
  127.                 Thread.Sleep(100);
  128.                 brojLjudi++;
  129.             }
  130.             Console.ReadLine();
  131.         }
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement