


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 生产者消费者问题一、 实验目的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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衣物清洗护理培训课件
- 基础举重知识培训课件
- 培训商场员工的课件
- 培训留存率的课件
- 计算机应用技术专业就业去向
- 装载机司机安全培训教程
- 研究目的主要写什么
- 议论文高中600字
- 员工安全培训图册
- 体育跳山羊教学课程设计
- 北京市2025学年高二(上)第一次普通高中学业水平合格性考试物理试题(解析版)
- 2025年四川省高考物理试卷真题(含答案)
- 炸鸡店的产品创新与口味调研
- 陕西省铜川市2025年八下英语期末监测试题含答案
- 社区工作者综合能力考试基础知识试题及答案
- 山西焦煤集团所属煤炭子公司招聘笔试题库2025
- 垫付医疗费协议书
- 2025年福建省厦门市中考物理模拟试卷
- 2024年陕西省普通高中学业水平合格性考试语文试题(原卷版+解析版)
- (高清版)DG∕TJ 08-9-2023 建筑抗震设计标准
- 数据库应用技术-第三次形考作业(第10章~第11章)-国开-参考资料
评论
0/150
提交评论