1欢迎下载班级姓名:学号:成绩:实验名称 : 生产者和消费者问题1
实验目的:“生产者消费者”问题是一个著名的同时性编程问题的集合
通过编写经典的“生产者消费者”问题的实验,读者可以进一步熟悉Linux 中多线程编程,并且掌握用信号量处理线程间的同步互斥问题
实验内容:“生产者消费者”问题描述如下
有一个有限缓冲区和两个线程: 生产者和消费者
他们分别把产品放入缓冲区和从缓冲区中拿走产品
当一个生产者在缓冲区满时必须等待,当一个消费者在缓冲区空时也必须等待
它们之间的关系如下图所示:这里要求用有名管道来模拟有限缓冲区,用信号量来解决生产者消费者问题中的同步和互斥问题
实验方法:(1)使用信号量解决(2)思考使用条件变量解决4
实验过程(1)信号量的考虑这里使用 3个信号量, 其中两个信号量avail和full分别用于解决生产者和消费者线程之间的同步问题, mutex是用于这两个线程之间的互斥问题
其中avail 初始化为 N(有界缓冲区的空单元数), mutex 初始化为 1,full初始化为 0
/*product
c*/ #include #include #include #include #include #include #include #include 精品文档
2欢迎下载#define FIFO "myfifo" #define N 5 int lock_var; time_t end_time; char buf_r[100]; sem_t mutex,full,avail; int fd; void pthread1(void *arg); void pthread2(void *arg); int main(int argc, char *argv[]) { pthread_t id1,id2; pthread_t mon