您好,在P180页第6行 “当 A 进程执行完自己的代码后,执行 V 操作,此时会将信号量的值更新为 1。”,这里是不是写错了?应该是 “更新为 0”。
我的理解:前面说到 进程 A 和进程 B 共享的信号量初始化为 0,如果内核先调度了 B,此时 P 操作会导致信号量的结果为 -1,阻塞进程 B。这时当 A 进程执行完后,会执行 V 操作,这个时候信号量不应该是从 -1 更新为 0 吗?
信号量不允许数值小于0,B先进行P操作会导致信号量变成-1,所以书上说”而这是不被允许的“,所以B会阻塞在这直到A把信号量更新为1