【问题标题】:Critical region codes and Semaphores关键区域代码和信号量
【发布时间】:2018-04-12 09:34:25
【问题描述】:

信号量是操作系统创建的数据结构,用于在进程之间提供同步和创建互斥。 wait() 和 signal() 是操作系统为了管理信号量而调用的方法,这些方法不能被中断服务程序信号中断。

我想知道 wait() 和 signal() 方法之间的关键区域代码是否可以中断?

【问题讨论】:

    标签: semaphore critical-section


    【解决方案1】:

    是的,它们可以仅仅因为定义本身没有提出这样的限制而被打断。

    在并发编程中,对共享资源的并发访问可能导致意外或错误的行为,因此访问共享资源的程序部分受到保护。这个受保护的部分是临界区或临界区。它一次不能由多个进程执行。

    所以关键部分要求互斥,但它没有说明原子性

    所以是的,wait() 和 signal() 方法之间的临界区代码可以被中断,但是一个好的同步结构是,一旦进程/线程进入临界区,即使该进程稍后被中断,其他进程也不会可以进入临界区。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2014-12-21
      相关资源
      最近更新 更多