Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Created by SharpDevelop.
- * User: Rza
- * Date: 24-May-15
- * Time: 8:56 PM
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
- using System;
- using System.Threading;
- namespace supermarket
- {
- /// <summary>
- /// Description of Supermarket.
- /// </summary>
- class Supermarket
- {
- private SemaphoreSlim semaforKase1 = new SemaphoreSlim(1);
- private SemaphoreSlim semaforKase2 = new SemaphoreSlim(1);
- private int red1;
- private int red2;
- private object objekat;
- private int vremeNaKasi;
- public Supermarket(int vremeNaKasi)
- {
- this.vremeNaKasi = vremeNaKasi;
- objekat = new object();
- red1 = 0;
- red2 = 0;
- }
- public void dolazakNaKasu()
- {
- string trenutniKupac = Thread.CurrentThread.Name;
- Console.WriteLine("{0}. kupac zeli da stane u red.", trenutniKupac);
- bool uRedu1 = false;
- bool uRedu2 = false;
- lock (objekat)
- {
- if (red1 > red2)
- {
- uRedu1 = true;
- }
- else
- {
- uRedu2 = true;
- }
- if (uRedu1 == true)
- {
- lock (objekat)
- {
- red1++;
- Console.WriteLine("{0} kupac je usao u prvi red.", trenutniKupac);
- uRedu1 = false;
- }
- semaforKase1.Wait();
- lock (objekat)
- {
- Console.WriteLine("{0} se nalazi na kasi 1", trenutniKupac);
- red1 --;
- }
- Thread.Sleep(vremeNaKasi);
- Console.WriteLine("{0} odlazi iz supermarketa", trenutniKupac);
- lock (objekat)
- {
- semaforKase1.Release();
- }
- }
- if (uRedu2 == true)
- {
- lock (objekat)
- {
- red2++;
- Console.WriteLine("{0} kupac je usao u drugi red", trenutniKupac);
- uRedu2 = false;
- }
- semaforKase2.Wait();
- lock(objekat)
- {
- Console.WriteLine("{0} se nalazi na kasi 2", trenutniKupac);
- red2 --;
- }
- Thread.Sleep(vremeNaKasi);
- Console.WriteLine("{0} odlazi iz supermarketa", trenutniKupac);
- lock(objekat)
- {
- semaforKase2.Release();
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement