c - 图映射资源信号量

标签 c linux pthreads mutex semaphore

你好我的 friend 我有这个例子我不明白解决方案: 这是问题所在:

有3个进程P1、P2、P3,分别对信号量S1、S2、S3进行3次操作,初始值 :S1 = 1, S2 = 1, S3 = 1。知道每个进程在一个循环内执行以下序列,以指示是否有可能留在状态interbloqueig。如果是这样,除了指示执行指令的顺序外,还可以通过图形映射资源来证明这一点。

        **P1**                 **P2**                   **P3**
        P(s1)                   P(s3)                     P(2)
        P(s3)                   P(s2)                 the critical section
   the critical section         P(s1)                     V(s2)
        V(s3)               the critical section
        V(s1)                   V(s1)
                                V(2)
                                V(3)

像 solition 我有这个: 我认为这是不正确的!

enter image description here

最佳答案

假设您在 P3 的开头指的是 P(s2) 而不是 P(2),并且图中的 R 指的是具有相同编号的信号量,您的图描述了所有 3 个进程都在在其关键部分之前的指令;并且由于存在循环 (P2->R1->P1->R2->P2),您遇到了死锁。所以我想完成这项作业所需要做的就是列出为达到这一点而执行的指令序列。

关于c - 图映射资源信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776867/

相关文章:

linux - 核心转储文件名使用 core_pattern %e.%p.core 获取线程名称而不是可执行文件名称

c++ - 在 libpthread 链接应用程序中捕获异常时出现段错误(linux、C++)

java - 使用 JNI 将数组从 C 程序返回到 Java

linux - c - 内核 - 自旋锁与队列

linux - 在 gcc 版本 4.1.2 中出现错误 "unrecognized option -Xa "

linux - awk 找到第一个匹配项,而不是所有匹配项

c - pthreads create_pthread() 传递多个参数

c - SDL_CreateRGBSurface 灰度图像需要什么设置?

c - 了解 C 原型(prototype)

协同内核开发