利用信号量解决睡着的理发师问题。

1. 实验目的

加深对信号量的理解,以及用信号量来实现进程互斥功能。

2. 实验内容

利用信号量解决睡着的理发师问题。有一个理发师,一把理发椅和n把供等候理发的顾客坐的椅子。

  • 如果没有顾客,理发师便在理发椅子上睡觉
  • 当一个顾客到来时,必须唤醒理发师,进行理发
  • 如果理发师正在理发时,又有顾客来到
    • 如果有空椅子可坐,他就坐下来等
    • 如果没有空椅子,他就离开

为理发师和顾客各编一段程序描述他们的行为,要求不能带有竞争条件。

线程创建函数:pthread_create(3): create new thread - Linux man page

在指定文件编写代码:

  • 在文件semaphore.h实现信号量创建、加锁、解锁操作,或者直接使用系统的API
  • 在文件barber.c实现理发师代码,在customer.c实现顾客代码,或者自行创建一个文件barber_customer.c将所有代码放在一起

3. 实验要求

实验基本要求见:所有实验要求章节

截止时间:通常是一周时间,具体见课堂派作业提交截止时间

4. 评分

得分:

  • 本次实验:10分
    • 伪代码:3分
    • 理发师:2分
    • 顾客:2分
    • 其他(包含但不局限于报告可读性,测试):3分
  • 评分由程序辅助判定+教师评分

5. 实验报告

实验报告模板-理发师.md

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2024-04-28 17:16

results matching ""

    No results matching ""