Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. Semaphore = {
  2. critsec: Mutex
  3. waiters: CondVar
  4. count: int
  5. wakeups: int
  6. }
  7.  
  8. init(sem, v):
  9. sem.value = v
  10. sem.mutex = 1
  11. sem.wakeups = 0
  12. sem.condval =
  13.  
  14. wait(sem):
  15. mutex_lock(sem.critsec)
  16. sem.count--
  17. while sem.value < 0:
  18. cond_val_wait(SEM_FREE, sem.waiters)
  19. if wakeups > 0:
  20. wakeups--
  21. break
  22. mutex_unlock(sem.critsec)
  23.  
  24. post(sem):
  25. mutex_lock(sem.critsec)
  26. sem.count++
  27. sem.wakeups++
  28. if sem.count
  29. conv_val_signal(SEM_FREE, sem.waiters)
  30. mutex_unlock(sem.critsec)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement