操作系统实验-线程的同步

操作系统实验-线程的同步

ID:9996261

大小:64.00 KB

页数:5页

时间:2018-05-20

操作系统实验-线程的同步_第1页
操作系统实验-线程的同步_第2页
操作系统实验-线程的同步_第3页
操作系统实验-线程的同步_第4页
操作系统实验-线程的同步_第5页
资源描述:

《操作系统实验-线程的同步》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验六线程的同步1、实验目的(1)进一步掌握Windows系统环境下线程的创建与撤销。(2)熟悉Windows系统提供的线程同步API。(3)使用Windows系统提供的线程同步API解决实际问题。2、实验准备知识:相关API函数介绍①等待对象等待对象(waitfunctions)函数包括等待一个对象(WaitForSingleObject())和等待多个对象(WaitForMultipleObject())两个API函数。1)等待一个对象WaitForSingleObject()用于等待一个对象。它等待的对象可以为以

2、下对象之一。·Changeontification:变化通知。·Consoleinput:控制台输入。·Event:事件。·Job:作业。·Mutex:互斥信号量。·Process:进程。·Semaphore:计数信号量。·Thread:线程。·Waitabletimer:定时器。原型:DWORDWaitForSingleObject(HANDLEhHandle,//对象句柄DWORDdwMilliseconds//等待时间);参数说明:(1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访

3、问。(2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到一个信号将其唤醒,如表2-1所示。返回值:如果成功返回,其返回值说明是何种事件导致函数返回。表2-1函数描述访问描述WAITABANDONED等待的对象是一个互斥(Mutex)对象,该互斥对象没有被拥有它的线程释放,它被设置为不能被唤醒WAITOBJECT0指定对象被唤醒WAITTIMEOUT超时用法举例:StaticHANDLEhHandlel=NULL;DWOR

4、DdRes;dRes=WaitForSingleObject(hHandlel,10);//等待对象的句柄为hHandlel,等待时间为10ms1)等待对个对象WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与WaitForSingleObject()相同。原型:DWORDWaitForMultipleObjects(DWORDnCount,//句柄数组中的句柄数CONSTHANDLE*lpHandles,//指向对象句柄数组的指针BOOLfWaitAll,//等待类型DWORDd

5、wMilliseconds//等待时间);参数说明:(1)nCount:由指针*lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUMWAITOBJECTS。(2)*lpHandles:指向对象句柄数组的指针。(3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数返回。(4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测

6、试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到一个信号将其唤醒。返回值:、如果成功返回,其返回值说明是何种事件导致函数返回。各参数的描述如表2-2所示。表2-2各参数描述访问描述WAITOBJECT0to(WAITOBJECT0+nCount-1)若bWaitAll为TRUE,返回值说明所有被等待的对象均被唤醒;若bWaitAll为FALSE,返回值减去WAITOBJECT0说明lpHandles数组下标指定的对象满足等待条件。如果调用时多个对象同时被唤醒,则取多个对象中最小的那个数组下标W

7、AITABANDONED0to(WAITABANDONED0+nCount-1)若bWaitAll为TRUE,返回值说明所有被等待的对象均被唤醒,并且至少有一个对象是没有约束的互斥对象;若bWaitAll为FALSE,返回值减去WAITABANDONED0说明lpHandles数组下标指定的没有约束的互斥对象满足等待条件WAITTIMEOUT超时且参数bWaitAll指定的条件不能满足①信号量对象(Semaphore)信号量对象(Semaphore)包括创建信号量(CreateSemaphore())、打开信号量(Op

8、enSemaphore())及增加信号量的值(ReleaseSemaphore())API函数。1)创建信号量CreateSemaphore())用于创建一个信号量。原型:HANDLECreateSemaphore(LPSECURITYATTRIBUTESlpSemaphoreAttributes,//安全属性LONGlIniti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。