Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // https://github.com/SOP2014/sop
- // https://github.com/HueHueHue/HueOS
- // https://subversion.assembla.com/svn/sopy/SystemOperacyjny/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Warstwa1
- {
- public class Semaphore
- {
- public IList<PCB> ProcesList = new List<PCB>(); // lista procesów
- public int value;
- Semaphore() { }
- // Semaphore(jakie potrzebujecie??){}
- public Semaphore(int value)
- {
- if (value < 0)
- throw new ArgumentOutOfRangeException(" Początkowa wartość semafora musi być nieujemna! ");
- this.value = value;
- }
- public void OperationP() //P — opuszczanie semafora (hol. proberen),
- {
- value--;
- if (value < 0)
- {
- Zawiadowca.RUNNING.BLOCKED = true;// czeka na sygnaał (operacja V) , więc nie może być chilowo wykonywany
- ProcesList.Add(Zawiadowca.RUNNING);// do listy dodaje obiekt PCB
- Warstwa5.Program.MainForm.addToList(" Operacja P. Dodaję proces do listy oczekujących.\n Wartość semafora: " + value);
- }
- }
- // Operacja V
- public void OperationV()// V — podnoszenie semafora (hol. verhogen).
- {
- value++;
- if (value <= 0)
- {
- Warstwa5.Program.MainForm.addToList(" Operacja V...");
- if (ProcesList != null)
- {
- PCB tmp = ProcesList.First();
- tmp.BLOCKED = false;
- ProcesList.Remove(ProcesList.First()); // może być?
- Warstwa5.Program.MainForm.addToList(" Odpalam proces, który czekał. Wartość semafora: " + value);
- }
- else
- {
- Warstwa5.Program.MainForm.addToList(" Żodyn nie czeka. Wartość semafora: " + value);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement