1. 实验目的
加深对信号量的理解,以及用信号量来实现进程互斥功能。
2. 实验内容
在服务器上用Vim编写一个程序,使用信号量解决经典IPC问题:生产者和消费者问题。
- 实现循环队列来模拟缓冲池
- 创建10个生产者。对于每个生产者,操作10000次,每次操作,往循环队列写入1个数
- 创建10个消费者。对于每个消费者,操作10000次,每次操作,从循环队列移除一个函数(
pop
)
线程创建函数:pthread_create(3): create new thread - Linux man page
在指定文件编写代码:
- 在文件
circular_queue.h
和circular_queue.c
中实现循环队列 - 在文件
semaphore.h
实现信号量创建、加锁、解锁操作,你们在进程同步实验已完成,拷过来直接用 - 在文件
producer_consumer_pv.c
实现生产者和消费者问题
3. 实验要求
实验基本要求见:所有实验要求章节
截止时间:
- 代码,实验课结束完成,由程序辅助判定
- 实验报告,截止时间为实验课当天21:00
4. 评分
得分:
- 本次实验:15分
- 实现循环队列,得5分
- 实现生产者和消费者问题,得10分
- 评分由程序辅助判定+教师评分
5. 实验报告
见实验报告模板。