Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.75 KB | None | 0 0
  1. public Transition<T> fire(Collection<Transition<T>> transitions) throws InterruptedException {
  2.         Map<T, Integer> tmp;
  3.         Semaphore tmp1;
  4.         Collection<Transition<T>> tmp2;
  5.         Transition<T> result = null;
  6.         boolean doAble = false;
  7.  
  8.         while(true){
  9.                 try{
  10.                 mutex.acquire();
  11.                 for(Transition<T> iterator : transitions) {
  12.                     if(checkTransition(iterator, this.initial)){
  13.                         doAble = true;
  14.                         result = iterator;
  15.                         break;
  16.                     }
  17.                 }
  18.                 if (doAble == false) {
  19.                     tmp1 = new Semaphore(0);
  20.                     queue.add(tmp1);
  21.                     waiting.put(tmp1, transitions);
  22.                     mutex.release();
  23.                     tmp1.acquire();
  24.                 }
  25.                 for(Transition<T> iterator : transitions) {
  26.                         if(checkTransition(iterator, this.initial)){
  27.                             result = iterator;
  28.                             break;
  29.                         }
  30.                 }
  31.                 tmp = doTransition(result, this.initial);
  32.                 this.initial = tmp;
  33.                 return result;
  34.             }
  35.             finally{
  36.                     for (Semaphore sem : queue) {
  37.                         tmp2 = waiting.get(sem);
  38.                         for(Transition<T> iterator : tmp2){
  39.                             if(checkTransition(iterator, this.initial)){
  40.                                 sem.release(); //dziedziczenie sekcji krytycznej
  41.                             }
  42.                         }
  43.                     }
  44.                 mutex.release();
  45.             }
  46.         }
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement