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;
- using System.Diagnostics;
- namespace ConsoleApp39
- {
- class Program
- {
- static SemaphoreSlim semafor1 = new SemaphoreSlim(1);
- static SemaphoreSlim semafor = new SemaphoreSlim(10);
- static SemaphoreSlim semafor2 = new SemaphoreSlim(1);
- static SemaphoreSlim semafor3 = new SemaphoreSlim(1);
- static int red1 = 0, red2 = 0, red3 = 0;
- static int brojLjudi = 0;
- static readonly object locker = new object();
- static void Dolazak()
- {
- semafor.Wait();
- Console.WriteLine(brojLjudi + " . Klijent dolazi u postu.");
- Thread.Sleep(1000);
- int najmanjired = minimum();
- if (najmanjired == 1)
- {
- Salter1();
- }
- else if (najmanjired == 2)
- {
- Salter2();
- }
- else
- {
- Salter3();
- }
- semafor.Release();
- }
- static void Salter1()
- {
- lock(locker)
- {
- red1++;
- }
- semafor1.Wait();
- Console.WriteLine("SALTER 1.... Korisnik vrsi uplatu...");
- Thread.Sleep(200);
- Console.WriteLine("ZAVRSIO. IZLAZI IZ POSTE");
- semafor1.Release();
- lock(locker)
- {
- red1--;
- }
- }
- static void Salter2()
- {
- lock(locker)
- {
- red2++;
- }
- semafor2.Wait();
- Console.WriteLine("SALTER 2.... Korisnik vrsi uplatu...");
- Thread.Sleep(200);
- Console.WriteLine("ZAVRSIO. IZLAZI IZ POSTE");
- semafor2.Release();
- lock(locker)
- {
- red2--;
- }
- }
- static void Salter3()
- {
- lock(locker)
- {
- red3++;
- }
- semafor3.Wait();
- Console.WriteLine("SALTER 3... Korisnik vrsi uplatu....");
- Thread.Sleep(200);
- semafor3.Release();
- lock (locker)
- {
- red3--;
- }
- }
- static int minimum()
- {
- if(red1< red2 && red1<red3)
- {
- return 1;
- }
- else if (red2 < red1 && red2 < red3)
- {
- return 2;
- }
- else if (red1==red2 && red1==red3 && red2==red3)
- {
- Random r = new Random();
- return (r.Next(1, 3));
- }
- else
- {
- return 3;
- }
- }
- static void Main(string[] args)
- {
- while(true)
- {
- Thread posta = new Thread(() => Dolazak());
- posta.Start();
- Thread.Sleep(100);
- brojLjudi++;
- }
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement