【发布时间】:2021-12-16 09:39:55
【问题描述】:
我很困惑信号量是原子的意味着什么。等待和信号的定义如下。
wait(S){
while ( S<= 0)
; // Busy wait
S--;
}
signal(S) {
S++;
}
书上说
wait()中对大二整数值的所有修改 和 signal() 操作必须以原子方式执行。也就是说,当一个 进程修改信号量值,其他进程不能 同时修改相同的信号量值
这是否意味着在while(S<=0) 和S-- 之间不能执行其他指令?以及在什么时候完成修改信号量值的过程?这是它最终递减S--的时候吗?
【问题讨论】:
-
'等待和信号的定义如下' - 请注意,虽然它可能是某些网站上的一些定义,但它并不通用。内核同步对象,如信号量,并不总是忙等待。
标签: multithreading operating-system synchronization semaphore