实验3produ-con

上传人:ji****n 文档编号:54835362 上传时间:2018-09-20 格式:PPT 页数:16 大小:420.50KB
返回 下载 相关 举报
实验3produ-con_第1页
第1页 / 共16页
实验3produ-con_第2页
第2页 / 共16页
实验3produ-con_第3页
第3页 / 共16页
实验3produ-con_第4页
第4页 / 共16页
实验3produ-con_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《实验3produ-con》由会员分享,可在线阅读,更多相关《实验3produ-con(16页珍藏版)》请在金锄头文库上搜索。

1、1,实验内容,实验题目 采用多线程技术解决生产者/消费者问题 实验目的 掌握pthread线程编程基本技术 理解线程同步机制 掌握多线程同步控制编程技术,2,生产者/消费者问题问题描述,也称有界缓冲区问题 多个生产者线程向缓冲区中写数据 多个消费者线程从缓冲区中读取数据 生产者线程和消费者线程必须满足 生产者写入缓冲区的数目不能超过缓冲区容量 消费者读取的数目不能超过生产者写入的数目,3,生产者/消费者问题PV原语操作,4,生产者/消费者问题问题分析,缓冲区须被生产者/消费者进程互斥访问 生产者进程 多个并发写进程互斥改变写指针 写入条件:缓冲区非满 消费者进程 多个并发读进程互斥改变读指针

2、读取条件:缓冲区非空 读写指针设计 初始化时读指针和写指针为0 如果读指针等于写指针,则缓冲区为空 如果(写指针+ 1) % BUFFER_SIZE等于读指针,则缓冲区为满,生产者/消费者问题问题分析,缓冲区访问结构示意图关键问题 如何利用线程互斥变量机制定义缓冲区结构 如何利用线程同步通信机制协调生产者/消费者进程通信 解决途径 线程条件变量通信机制,5,6,生产者/消费者问题解题思路,缓冲区结构定义 一个mutex变量:pthread_mutex_t 两个条件变量(控制读写指针):pthread_cond_t,生产者/消费者问题解题思路,生产者/消费者进程的同步通信协调,7,9,生产者/消

3、费者问题解决方案,主程序启动生产者/消费者线程 生产者线程顺序地将0 到1000写入循环缓冲区 消费者线程不断地从共享的循环缓冲区读取数据,生产者/消费者问题关键函数,线程管理相关函数 int pthread_create( ); int pthread_join(); 线程互斥控制相关函数 int pthread_mutex_init(); int pthread_mutex_lock(); int pthread_mutex_unlock(); 线程条件变量控制相关函数 int pthread_cond_init(); int pthread_cond_wait(); int pthread_cond_signal();,10,11,生产者/消费者问题程序代码,12,生产者/消费者问题程序代码,13,生产者/消费者问题程序代码,14,生产者/消费者问题程序代码,15,生产者/消费者问题程序代码,生产者/消费者问题运行,编译、执行 gcc proncons.c o proncons lpthread ./proncons 运行结果,16,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号