信号量是操作系统创建的数据结构,用于提供同步并在进程之间创建互斥。 wait()和signal()是操作系统为了管理信号量而调用的方法,这些方法不能被中断服务程序信号中断。
我想知道wait()和signal()方法之间的关键区域代码是否可以中断?
答案 0 :(得分:1)
是的,他们可以被中断,因为定义本身没有提出这样的限制。
在并发编程中,对共享资源的并发访问可能导致意外或错误的行为,因此访问共享资源的程序部分受到保护。受保护的部分是关键部分或关键区域。它不能一次由多个进程执行。
所以关键部分要求互斥,但它没有说明原子性。
是的,wait()和signal()方法之间的关键区域代码可以被中断,但是一个好的同步构造就是一旦进程/线程进入临界区,即使该进程稍后被中断,也没有其他进程会能够进入关键部分。