


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 生产者消费者问题一、 实验目的1 掌握进程(线程)的同步与互斥。2 掌握生产者消费者问题的实现方法。3 掌握多线程编程方法。二、 相关函数VC提供一系列函数用于实现多线程编程以及线程的互斥与同步。(1) 创建线程HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下: lpThreadAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针,该结构决定了线程的安全属性,一般置为 NULL; dwStackSize:指定了线程的堆栈深度,一般都设置为0; lpStartAddress:表示新线程开始执行时代码所在函数的地址,即线程的起始地址。main()函数是主线程的入口函数,同样,新创建的线程也需要一个入口函数,lpStartAddress就是指示该函数的地址。并且这个函数的定义应遵循下面的声明形式 DWORD WINAPI ThreadProc(LPVOID lpParameter); lpParameter:指定了线程执行时传送给线程的32位参数,即线程函数的参数; dwCreationFlags:控制线程创建的附加标志,可以取两种值。如果该参数为0,线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于阻塞状态,并不马上执行,直至函数ResumeThread被调用; lpThreadId:该参数返回所创建线程的ID; 函数返回值:如果创建成功则返回线程的句柄,否则返回NULL。(2) 创建互斥对象(用于互斥)HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCTSTR lpName);该函数可以创建一个命名的或匿名的互斥对象,其中各参数说明如下: lpMutexAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针,该结构决定了互斥对象的安全属性,一般置为NULL; bInitialOwner:指定互斥对象的初始拥有者。如果设置为TRUE,则创建这个互斥对象的线程获得该对象的拥有权;否则,该线程将不获得互斥对象的拥有权。一般都设置为FALSE; lpName:指定互斥对象的名称。若设置为NULL,则创建匿名的互斥对象。 函数返回值:如果创建成功则返回互斥对象的句柄,否则返回NULL。(3) 创建信号量对象(用于同步)HANDLE CreateSemaphore (LPSECURITY_ATTRIBUTES lpsaAttributes, LONG lInitialCount, LONG lMaxCount, LPCTSTR lpName);该函数可以创建一个命名的或匿名的信号量对象,其中各参数说明如下: lpsaAttributes:指向一个 SECURITY_ATTRIBUTES 结构的指针,该结构决定了信号量对象的安全属性,一般置为 NULL; lInitialCount:信号量对象的初始计数值; lMaxCount:信号量对象计数值的最大值。 lpName:指定信号量对象的名称。若设置为NULL,则创建匿名的信号量对象。 函数返回值:如果创建成功则返回信号量对象的句柄,否则返回NULL。(4) 等待信号(相当wait操作)DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);该函数用来检测 hHandle 事件的信号状态,调用该函数后,该函数会一直等待,直到以下两种情况才会返回。、对象有信号,、等待时间已过。其中各参数说明如下: hHandle:所检测对象的句柄; dwMilliseconds:等待的时间。可以设置为INFINITE,则函数会一直等待,直到等待对象有信号才返回; (5) 释放互斥对象(相当用于互斥的signal操作)BOOL ReleaseMutex(HANDLE hMutex);该函数用来释放hMutex指定的互斥对象。其中各参数说明如下: hMutex:互斥对象的句柄; (6) 增加信号量的值(相当于用于同步的signal操作)BOOL ReleaseSemaphore ( HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount);该函数用来增加信号量的值。其中各参数说明如下: hSemaphore:信号量对象的句柄; lReleaseCount 增加的计数,一般是1; lpPreviousCount增加前的数值返回,一般为NULL;三、 实验内容1、通过小程序thread_example(见附件)掌握在VC6.0环境下创建多线程的方法2、实现生产者消费者问题。(1)假设循环缓冲队列共有10个缓冲单元。(2)生产者线程的工作:生产出一个产品(即产生一个产品编号),按顺序往缓冲队列中“空”的缓冲单元放产品,并将该缓冲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年临沂临沭县公立医院急需紧缺人才引进(17名)考前自测高频考点模拟试题附答案详解(模拟题)
- 2025湖南省社会科学院湖南省人民政府发展研究中心招聘高层次人才14人模拟试卷含答案详解
- 2025江西瑞昌市部分市直事业单位考选工作人员17人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025呼伦贝尔新正电工技术服务有限公司面向社会招聘115人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 智能灌溉优化策略-洞察与解读
- 2025吉林白城师范学院招聘高层次人才57人(1号)考前自测高频考点模拟试题及参考答案详解一套
- 2025广西贺州市中小学(幼儿园)教师公开招聘更正岗位计划表相关的考前自测高频考点模拟试题及参考答案详解一套
- 2025广东清远市英德市招聘教师222人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年宁德霞浦县国资与金融服务中心公开招聘6人模拟试卷及参考答案详解1套
- 2025年浙江大学医学院附属第二医院招聘心电图室工作人员若干人考前自测高频考点模拟试题附答案详解(典型题)
- AIGC基础与应用第6章-AIGC造就绘画大师
- 《炼油与化工装置机泵 在线监测系统技术规范》
- 羽毛球竞赛编排知识与方法
- 2023数据标准管理实践
- 非洲水坝施工方案
- Unit 3 Understanding ideas The Road to Success课件 2023-2024学年高中英语外研版选择性必修第一册
- 项目需求分析文档(模板)
- 长阳清江画廊
- 四川2023年专业技术人员公需科目“数字经济与驱动发展”参考答案(通用版)
- 液压泵站使用说明书
- 职工三级安全教育卡模版
评论
0/150
提交评论