云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 系统调用中的信号量PV操作 理发师问题

系统调用中的信号量PV操作 理发师问题

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 4:45:10

否则只能为当前进程的所有线程共享;value给出了信号量的初始值。 (2)函数sem_post( sem_t *sem )用来增加信号量的值。

当有线程阻塞在这个信号量上时,调用这个函数会使其中的一个线程不在阻塞,选择机制同样是由线程的调度策略决定的。

(3)函数sem_wait( sem_t *sem )被用来阻塞当前线程直到信号量sem的值大于0,

解除阻塞后将sem的值减一,表明公共资源经使用后减少。函数sem_trywait ( sem_t *sem )是函数sem_wait()的非阻塞版本,它直接将信号量sem的值减一。

2.3 伪码实现

difine n 5; //为顾客准备的椅子数为5 semaphore mutex=1; //用于互斥

semaphore customers=0;//等候理发的顾客数 semaphore barbers=1;//正在等候顾客的理发师数

int waiting=0; //等候理发的顾客数 //理发师线程 void barber() {

while(true) //判断有无顾客 {

wait(customers); //若无顾客,理发师睡眠

wait(mutex); //互斥

waiting--; //等候顾客数少一个 signal(mutex); //释放临界资源

signal(barber); //理发师去为一个顾客理发 cut_hair; //正在理发

} } //顾客线程

void customer() {

wait(mutex); // if (waiting

waiting++; // signal(mutex); //signal(customers); // wait(barber); // get_haircut; //}

else

signal(mutex); //}

}

2.4 开发环境与工具

系统平台:LINUX环境 实现语言:C语言 开发工具:NANO编辑器

互斥

如果有空椅子,则等待 等候顾客数加1

释放临界资源

如果理发师睡觉,唤醒理发师理发师在理发, 顾客等候 顾客坐下等理发师

店里人满了,顾客离开

3数据结构与模块说明

3.1 数据结构

通过分析课程设计要求,定义以下的数据: sem_t

mutex,customers,barbers;

//design

mutex,customer,barbers

int waiting=0; //the number of waiting customers int chair[5];

3.2程序模块说明 3.2.1主函数模块

主函数流程图如下:

three

semaphores:

3.2.2 理发师模块

理发师模块函数流程图如下:

3.2.3 顾客模块

顾客模块函数流程图如下:

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

否则只能为当前进程的所有线程共享;value给出了信号量的初始值。 (2)函数sem_post( sem_t *sem )用来增加信号量的值。 当有线程阻塞在这个信号量上时,调用这个函数会使其中的一个线程不在阻塞,选择机制同样是由线程的调度策略决定的。 (3)函数sem_wait( sem_t *sem )被用来阻塞当前线程直到信号量sem的值大于0,解除阻塞后将sem的值减一,表明公共资源经使用后减少。函数sem_trywait ( sem_t *sem )是函数sem_wait()的非阻塞版本,它直接将信号量sem的值减一。 2.3 伪码实现 difine n 5; //为顾客准备的椅子数为5 semaphore mutex=1; //用于互斥

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com