欢迎来到天天文库
浏览记录
ID:52242342
大小:661.36 KB
页数:8页
时间:2020-03-25
《window下多线程编程实验.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、window下多线程编程实验实验时间地点实验日期时间地点2012-05-02周三晚6:40—10:00教三楼3062012-05-03周四晚6:40—10:00教三楼3062012-05-04周五晚6:40—10:00教三楼306实验报告(1)按照“网络教学平台”上模板来写(2)重点写自己的实验过程、遇到的问题及如何解决、自己的收获(3)在“网络教学平台”上提交word版实验报告和zip版项目文件包(4)实验报告提交截止时间:2012-05-14周一晚24:00实验目的(1)初步学习、理解、掌握wind
2、ow下多线程程序开发方法(2)初步学习、了解多线程之间的同步方法实验结果及检查(1)基于CreateThread实现多线程,并实现线程的恢复、暂停、终止等。(2)基于Beginthread实现多线程,并实现线程的简单同步。实验环境VC6.0SP6英文版如果没有,大家通过网络学堂可以下载,直接安装即可,注意不要重启电脑。实验原理在Windows平台下可以通过Windows的线程库来实现多线程编程,通过Windows操作系统为内核以及应用程序之间提供的接口API,应用程序通过调用相关的函数获得相应的系统功能
3、。Win32函数库中提供了操作多线程的函数,包括创建线程、管理线程、终止线程、线程同步等接口。(一)创建线程,具体来说,主要有两种方法(1)通过线程函数CreateThreadDWORDWINAPIThreadFunc(LPVOIDlpvThreadParm);线程创建HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,SIZE_TdwStackSize,LPTHREAD_START_ROUTINElpStartAddress,LPVOI
4、DlpParameter,DWORDdwCreationFlags,LPDWORDlpThreadId);第一个参数lpThreadAtt,是一个指向SECURITY-ATTRIBUTES结构的指针,该结构制定了线程的安全属性,缺省为NULL。第二个参数dwStackSize,是栈的大小,一般设置为0。第三个参数LPTHREAD_START_ROUTINE是新线程开始执行时,线程函数的入口地址。它必须是将要被新线程执行的函数地址,不能为NULL。lpStartAddress参数指定了线程函数的地址,新建
5、线程将从此地址开始执行,直到return语句返回,线程运行结束,把控制权交给操作系统。第四个参数lpParameter,是线程函数定义的参数。可以通过这个参数传送值,包括指针或者NULL。第五个参数dwCreationFlags,控制线程创建的附加标志,可以设置两种值。0表示线程在被创建后就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统产生线程后,该线程处于挂起状态,并不马上执行,直至函数ResumeThread被调用;第六个参数lpThreadID,为指向32位变量的指针,该参数
6、接受所创建线程的ID号。如果创建成功则返回线程的句柄,否则返回NULL。(2)方法2通过_beginthread创建线程还可以用process.h头文件中声明的C执行时期链接库函数_beginthread。在回调入口函数之前进行一些线程相关的CRT的初始化操作语法:hThread=_beginthread(void(__cdecl*start_address)(void*),unsignedstack_size,void*arglist);(二)线程间通信线程之间通信的两个基本问题是互斥和同步。线程同步
7、是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应该等待,直到消息到达时才被唤醒。线程互斥是指对于共享资源,在各线程访问时的排它性,线程互斥是一种特殊的线程同步。在window下可以通过以下五种方法实现Win32线程同步全局变量事件(Event)临界区(Criticalsection)互斥量(Mutex)信号量(Semaphore)本实验中只用到事件Event,其他大家有兴趣可以进一步自己查阅资料实验。实验步骤(一)VC6.0开发环境中对项目
8、Project配置(1)新建一个项目目录在D盘以自己的“学号_姓名_work”新建一个目录,作为本次项目目录。注意:用数字和拼音,不要用中文(2)新建一个win32Consoleproject项目名称任意,不要有中文。Location选择(1)中的目录。选择第一项,空项目(3)新建一个C++源文件(4)对项目进行配置,加入多线程支持Project下的Setting子菜单C/C++选项单下的CodeGeneration项改为DebugMult
此文档下载收益归作者所有