Exemplo n.º 1
0
void thr1() {
q0: acquire_thread_id(1, m); // m=0 /\ m'=1
q1:  x = 0;
q2:  x = 1;
q3:  assert(x>=1);
q4:  release(m);
}
Exemplo n.º 2
0
void thr2() {
  acquire_thread_id(2, m); // m=0 /\ m'=2
  x = 0;
  x = 1;
  assert(x>=1);
  release(m);
}
Exemplo n.º 3
0
void thr1() {
  acquire_thread_id(1, m); // m=0 /\ m'=1
  x = 0;
  x = 1;
  assert(x>=1);
  release(m);
}
Exemplo n.º 4
0
inline int down_interruptible(int tid) {
  acquire_thread_id(tid, lock);
  return 0; // lock is held
}