Sheepcheap 2023-11-26 21:51 采纳率: 0%
浏览 5

pv同步互斥问题 我有点不懂哪位可以帮帮我

问题:

img


答案:

img

对于这个答案我不懂的地方在:
我知道p1进程的先p(s1)再v(s2)和p2进程的先p(s2)再v(s1)是为了实现两个手臂的互相同步,但是没有给初始值,我也不知道s1和s2该怎么设置初始值,所以我理解不了这样如何实现真正的相互同步。

我之后又想了一个答案,不知道对不对😭
思路:我设置了一个全局变量i,让i的初值为0,这样能否实现两个交替工作啊?我不知道对不对我感觉我做的是对的,如果有不对的地方希望帮我讲一下😢

img

(希望有人帮帮我🤧)

  • 写回答

1条回答 默认 最新

  • ntzhuima 2023-11-27 13:23
    关注
    • 感觉答案有点怪怪的
    • 你写的答案只有互斥,就是两个手臂不可能同时工作;但是没有起到同步的作用,当v(mutex)后,有可能还是p1进程获取资源运行,有可能p1进程连续执行多次
    • 下边的是我的思路,供你参考一下
    // 信号量定义  
    semaphore mutex = 1; // 互斥信号量,确保两个手臂不会同时工作  
    semaphore sync1 = 0; // 同步信号量,用于唤醒手臂1
    semaphore sync2 = 0; // 同步信号量,用于唤醒手臂2
      
    // P1进程:驱动左臂拣易拉罐  
    process P1 {  
      while (true) {  
        P(mutex); // 请求互斥访问  
        // 拣易拉罐操作  
        V(sync2); // 唤醒手臂2  
        V(mutex); // 释放互斥访问权限  
        P(sync1); // 等待手臂2完成工作,唤醒p1
      }  
    }  
      
    // P2进程:驱动右臂拣塑料瓶  
    process P2 {  
      while (true) {  
        P(sync2); // 等待手臂1完成工作,唤醒p2  
        P(mutex); // 请求互斥访问  
        // 拣塑料瓶操作  
        V(sync1); // 唤醒手臂1  
        V(mutex); // 释放互斥访问权限  
      }  
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月26日

悬赏问题

  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 问一下,定向解包是什么意思
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!