线程的实现和线程间的同步与互斥

线程的实现和线程间的同步与互斥

ID:14135125

大小:41.00 KB

页数:5页

时间:2018-07-26

线程的实现和线程间的同步与互斥_第1页
线程的实现和线程间的同步与互斥_第2页
线程的实现和线程间的同步与互斥_第3页
线程的实现和线程间的同步与互斥_第4页
线程的实现和线程间的同步与互斥_第5页
资源描述:

《线程的实现和线程间的同步与互斥》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二线程的实现和线程间的同步与互斥一、目的:1、了解在WINDOWS中线程的编程实现,掌握利用VC或DELPHI调用WINDOWSAPI建立线程。2、了解在WINDOWS中线程间同步与互斥的信号量的实现,并利用该原理实现在WINDOWS下模拟实现有关经典线程同步与互斥问题。二、内容:1、利用VC或DELPHI在实际程序中实现线程。2、利用VC或DELPHI实现线程的同步模拟。主要模拟以下问题(经营者和消费者、阅读者和写入者)。三、实验要求:实验内容中的第1小题为必作内容,第2小题可选择其一。四、实验提示:1

2、、在Windows中调用API函数。对于VC,在程序头文件应包括#include语句。对于DELPHI,在程序前的USES中应包括Windows。2、Windows系统中的线程及有关的系统调用。Windows中的线程是内核线程,是系统的主要调度单位,提供了一系列的系统调用。CreateThread完成线程的创建,TerminateThread用于结束当前线程。SuspendThread可挂起指定的线程。ResumeThread可激活指定的线程。对于Windows来说,是用挂起计数来进行线

3、程挂起和激活的计数的。每调用挂起一次,计数加1,反之则减1。当计数为0时,线程恢复运行。四个调用的原型及简单说明如下。(1)、CreateThread创建线程HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,//指向安全属性结构的指针,一般为NULL。DWORDdwStackSize,//初始化线程的堆栈尺寸,一般为0。LPTHREAD_START_ROUTINElpStartAddress,//指向线程执行体的指针。LPVOIDlpPara

4、meter,//新线程的参数DWORDdwCreationFlags,//建立标志位,0:创建后立即执行,1:创建后挂起。LPDWORDlpThreadId//指向返回标识符的指针。)(2)、SuspendThread挂起指定的线程DWORDSuspendThread(HANDLEhThread//线程句柄)(3)、ResumeThread激活指定的线程DWORDResumeThread(HANDLEhThread//线程句柄)(4)、TerminateThread结束线程BOOLTerminateThrea

5、d(HANDLEhThread,//线程句柄DWORDdwExitCode//线程的结束代码。一般为0。)1、Windows中的同步机制及相关调用。在Windows中提供了互斥对象、信号量对象和事件对象三种同步对象和相应的系统调用,用于进程和线程的同步。另外还提供了临界区(CriticalSection)对象和互斥变量访问API等。在这里,我们主要对互斥对象和信号量对象进行简单介绍。互斥对象(Mutex)为互斥信号量,它的相关API为:Createmutex创建一个互斥信号量,Openmutex打开一个互斥信

6、号量,Releasemutex释放一个互斥信号量,使之可用,相当于Signal操作。信号量对象(Semaphore)为资源信号量,它的相关API为:CreateSemaphore创建一个信号量对象,OpenSemaphore打开一个信号量对象,ReleaseSemaphore释放一个信号对象。系统中统一的等待操作WaitForSingleObject,相当于Wait操作。七个调用的原型和简单说明如下:(1)、Createmutex创建互斥信号量HANDLECreateMutex(LPSECURITY_ATTR

7、IBUTESlpMutexAttributes,//指向安全属性的指针,一般为NULLBOOLbInitialOwner,//初始化时所有权的标志位,TRUE:创建时即拥有,FALSE:创建时不拥有。LPCTSTRlpName//互斥信号量的名称)(2)、Openmutex打开互斥信号量HANDLEOpenMutex(DWORDdwDesiredAccess,//操作标志位,一般为MUTEX_ALL_ACCESSBOOLbInheritHandle,//继承标志位,一般为FALSELPCTSTRlpName/

8、/互斥信号量的名称)(3)、Releasemutex释放互斥信号量BOOLReleaseMutex(HANDLEhMutex//互斥信号量的句柄)(4)、CreateSemaphore创建信号量对象HANDLECreateSemaphore(LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,//指向安全属性的指针,一般为NULL。LONGlInitialCount

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

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

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