【发布时间】:2018-05-07 18:59:38
【问题描述】:
我正在阅读 Silberschatz 的书和信号量,我看到一些令人困惑的东西。
在 Silberschatz'book 中有两种 wait() 定义。
第一个是:
wait(S) {
while (S<= 0)
; //busy-wait
S--;
}
第二个是:
wait(semaphore *S) {
S->value--;
if (S->value < 0) {
add this process to S->list;
block();
}
}
哪一个是真的? 当我们调用等待信号量时,我们首先应该做什么?检查信号量值或减少其值?
【问题讨论】:
标签: concurrency operating-system semaphore mutual-exclusion