问题背景
并发程序设计基本概念
并发程序设计
image.png
临界资源与临界区, 同步与互斥
临界资源: 并发程序之间需要互斥使用的共享资源
如: 火车上的卫生间
使用共享变量代表共享资源
并发进程中与共享变量有关的程序段叫...(这让我想起了去年的 CPP 高级程序设计, 飞机调度不就是这个问题吗? 但是那时候我是一点都不懂并发程序设计啊….)...V(s): 信号量 s 加一, 若结果不大于零, 说明此时仍有等待资源的进程, 从 s 的等待队列中释放(唤醒)一个进程, 将其转换为就绪态....s 为正数, 该值等于封锁进程前信号量 s 还可以施行的 P 操作次数, 也等于 s 所代表的世纪还可以使用的物理资源数
s 为负数, 绝对值等于在 s 的等待队列中排队的进程数
P 代表请求一个资源...P(fork[(i+1)%5]; // 请求左手边的叉子
V(mutex); // 释放, 因为允许多个哲学家同时吃饭
eat();
V