windows同步互斥函数.ppt_第1页
windows同步互斥函数.ppt_第2页
windows同步互斥函数.ppt_第3页
windows同步互斥函数.ppt_第4页
windows同步互斥函数.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows同步与互斥函数 中山大学计算机科学系陈国明isscgm CreateTread 函数功能 创建一个在调用进程的地址空间中执行的线程函数原型 HANDLECreateThread LPSECURITY ATTRIBUTESlpThreadAttributes DWORDdwStackSize LPTHREAD START ROUTINElpStartAddress LPVOIDlpParameter DWORDdwCreationFlags LPDWORDlpThreadId 返回值 成功则返回新线程的句柄 否则返回NULL参数 安全属性 为空则不使用 线程堆栈大小 0为缺省 例如 HANDLEh Thread DWORDthread ID ThreadInfothread info 假设ThreadInfo是用户预定义结构 DWORDWINAPISubThread void aa intiID int aa h Thread CreateTread NULL 0 LPTHREAD START ROUTINE SubThread void i或返回值 无 CreateMutex 函数功能 创建有名或无名的互斥对象HANDLECreateMutex LPSECURITY ATTRIBUTESlpMutexAttributes pointertosecurityattributesBOOLbInitialOwner flagforinitialownershipLPCTSTRlpName pointertomutex objectname 返回值 若成功则返回互斥对象句柄 若失败则返回NULL HANDLEname name CreateMutex NULL FALSE aaa name OpenMutex MUTEX ALL ACCESS FALSE aaa ReleaseMutex 函数功能 放弃指定互斥对象的所有权函数原型 BOOLReleaseMutex HANDLEhMutex 返回值 成功则返回非零值 否则返回零 HANDLEh Mutex h Mutex CreateMutex NULL FALSE mutex for readcount h Mutex OpenMutex MUTEX ALL ACCESS FALSE mutex for readcount DWORDwait for mutex wait for mutex WaitForSingleObject h Mutex 1 ReleaseMutex h Mutex Sleep 函数功能 对于指定的时间间隔挂起当前的执行线程函数原型 VOIDSleep DWORDdwMilliseconds 返回值 无 WaitForMultipleObjects 函数功能 当满足下列条件之一时返回 1 任意一个或全部指定对象处于信号态 2 超时 函数原型 DWORDWaitForMultipleObject DWORDncount CONSTHANDLE lpHandles BOOLfWaitAll DWORDdwMilliseconds 返回值 调用成功则返回引起函数返回的事件 否则返回WAIT FAILED 例如 DWORDwait for all DWORDn thread 线程数目HANDLEh Thread MAX THREAD NUM wait for all WaitForMultipleObject n thread h Thread TRUE 1 WaitForSingleObject 函数功能 当下列情况之一发生时函数返回 1 指定对象处于信号态 2 超时函数原型 DWORDWaitForSingleObject HANDLEhHandle DWORDdwMilliseconds 返回值 调用成功则返回引起函数返回的事件 否则返回WAIT FAILED InitializeCriticalSection 函数功能 初始化临界区对象 临界区使用之前必须初始化 函数原型 VOIDInitializeCriticalSection LPCRITICAL SECTIONlpCriticalSection 返回值 无 EnterCriticalSection 函数功能 等待指定临界区对象的所有权 当调用线程被赋予所有权时 该函数返回 函数原型 VOIDEnterCriticalSection LPCRITICAL SECTIONlpCriticalSection 返回值 无 LeaveCriticalSection 函数功能 释放指定临界区对象的所有权 函数原型 VOIDLeaveCriticalSection LPCRITICAL SECTIONlpCriticalSection 返回值 调用成功则返回引起函数返回的事件 否则返回WAIT FAILED 例如 CRITICAL SECTIONRP Write 定义一个临界区对象InitializeCriticalSection CreateSemaphore 函数功能 创建一个有名或无名的信号量对象函数原型 HANDLECreateSemaphore LPSECURITY ATTRIBUTESlpAttributes LONGlInitialCount LONGlMaximumCount LPCTSTRlpName 返回值 若成功则返回信号量对象句柄 失败则返回NULL ReleaseSemaphore 函数功能 将指定信号量对象的计数增加一个指定的数量 函数原型 BOOLReleaseSemaphore HANDLEhSemaphore LONGlReleaseCount LPLONGlpPreviousCount 返回值 成功则返回TRUE 否则返回FALSE HANDLEname OpenSemaphore SEMAPHORE ALL ACCESS FALSE name WaitForSingleObject name INFINITE ReleaseSemaphore name 1 NULL WaitForSingleObject name INFINITE ReleaseMutex name 题目 吃苹果 父亲 儿子 女儿三人和一个盘子 当盘子空时 父亲往盘中随机放苹果或香蕉 儿子只从盘中拿苹果 女儿只从盘中拿香蕉 include include includestaticintk 0 forfathertolisttheorderofthrowingfruitCRITICAL SECTIONmmutex 用于互斥的临界区HANDLEApple Banana 线程函数 儿子行为函数 DWORDWINAPISon LPVOIDn inti 1 OpenSemaphore MUTEX ALL ACCESS false apple while 1 WaitForSingleObject Apple INFINITE 等苹果cout Soneats i apples endl LeaveCriticalSection 线程函数 女儿行为函数 DWORDWINAPIDaughter LPVOIDn inti 1 OpenSemaphore MUTEX ALL ACCESS false banana while 1 WaitForSingleObject Banana INFINITE 等香蕉cout Daughereats i bananas endl LeaveCriticalSection 线程函数 父亲放水果 DWORDWINAPIFather LPVOIDn UINTfruit EnterCriticalSection intmain intj k 0 HANDLEFather 20 Apple CreateSemaphore NULL 0 1 apple Banana CreateSemaphore NULL 0 1 banana InitializeCriticalSection VisualC 中伪随机数生成机制 用VC产生随机数有两个函数 分别为rand void 和srand seed 其用法是先调用srand函数 如srand unsigned time NULL 这样可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论