网站大量收购闲置独家精品文档,联系QQ:2885784924

实验3 produ-con .ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3 produ-con

* 实验内容 实验题目 采用多线程技术解决生产者/消费者问题 实验目的 掌握pthread线程编程基本技术 理解线程同步机制 掌握多线程同步控制编程技术 * 生产者/消费者问题—问题描述 也称有界缓冲区问题 多个生产者线程向缓冲区中写数据 多个消费者线程从缓冲区中读取数据 生产者线程和消费者线程必须满足 生产者写入缓冲区的数目不能超过缓冲区容量 消费者读取的数目不能超过生产者写入的数目 * 生产者/消费者问题—PV原语操作 * 生产者/消费者问题—问题分析 缓冲区须被生产者/消费者进程互斥访问 生产者进程 多个并发写进程互斥改变写指针 写入条件:缓冲区非满 消费者进程 多个并发读进程互斥改变读指针 读取条件:缓冲区非空 读写指针设计 初始化时读指针和写指针为0 如果读指针等于写指针,则缓冲区为空 如果(写指针+ 1) % BUFFER_SIZE等于读指针,则缓冲区为满 生产者/消费者问题—问题分析 缓冲区访问结构示意图 关键问题 如何利用线程互斥变量机制定义缓冲区结构 如何利用线程同步通信机制协调生产者/消费者进程通信 解决途径 线程条件变量通信机制 * * 生产者/消费者问题—解题思路 缓冲区结构定义 一个mutex变量:pthread_mutex_t 两个条件变量(控制读写指针):pthread_cond_t 生产者/消费者问题—解题思路 生产者/消费者进程的同步通信协调 * 生产者进程 消费者进程 1、调用pthread_mutex_lock()对lock上锁,并根据以下条件判断缓冲区是否已满; (writepos + 1) % BUFSIZE == readpos 2、若满,调用ptread_cond_wait()进入阻塞,等待notfull条件变量; 3、写入数据并移动写指针writepos; 4、调用pthread_cond_signal()向消费者信号通过notempty条件变量; 5、调用pthread_mutex_unlock()对mutex解锁。 1、调用pthread_mutex_lock()对lock上锁,并根据以下条件判断缓冲区是否为空; writepos == readpos 2、若空,调用ptread_cond_wait()进入阻塞,等待notempty条件变量; 3、读取数据并移动读指针readpos; 4、调用pthread_cond_signal()向消费者信号通过notfull条件变量; 5、调用pthread_mutex_unlock()对mutex解锁。 * 生产者/消费者问题—解决方案 主程序启动生产者/消费者线程 生产者线程顺序地将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(); * * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 * 生产者/消费者问题—程序代码 生产者/消费者问题—运行 编译、执行 gcc proncons.c –o proncons –lpthread ./proncons 运行结果 *

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档