操作系统实验-线程的创建和撤消
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
一、实验项目名称
线程的创建和撤消
二、实验目的
a)理解进程与线程的概念。
b)掌握线程的创建和撤消.
三、实验仪器
一台完善的电脑设备,当然该电脑应装有Microsoft Visual Studio。
四、实验步骤
1、要求:
使用Windows 2000环境,在一个进程中创建一个线程。在线程中显示“Thread is runing”,线程运行5秒钟后,将该程删除。
2、代码如下:
#include
#include
void running(int num)
{
for(int i=1;i<=num;i++)
{
cout<<"线程开始运行,"<
Sleep(1000);
}
void main()
{
int a;
static HANDLE hHandle1=NULL; //用于存储线程返回句柄的变量。
DWORD dwThreadID1; //用于存储线程标识符的变量。
//创建一个名为ThreadName1的线程。
hHandle1 = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE)running,
(LPVOID) 5,
CREATE_SUSPENDED,
&dwThreadID1 );
cout<<"进程已经被挂起......"< cout<<"按0 唤起进程."< cin>>a; if(a==0) { ResumeThread(hHandle1); Sleep(5000); } ExitThread(0); } 运行结果如下:() 进程已经被挂起...... 按0 唤起进程. 线程开始运行,1秒后自动撤销 线程开始运行,2秒后自动撤销 线程开始运行,3秒后自动撤销 线程开始运行,4秒后自动撤销 线程开始运行,5秒后自动撤销 Press any key to continue 3、多线程 #include #include DWORD WINAPI Thread1(LPVOID lpParameter) { while(1){ cout<<"我是线程1"< } return 23; //(I) } DWORD WINAPI Thread2(LPVOID lpParameter) { while(1){ cout<<"我是线程2"< } DWORD exitcode=34; ExitThread(exitcode); //(II) return 21; } int main(void) { HANDLE handle1,handle2; DWORD dw1,dw2; //线程标示符 handle1=CreateThread(NULL,0,Thread1,NULL,C REATE_SUSPENDED,&dw1); Sleep(200); handle2=CreateThread(NULL,0,Thread2,NULL,0, &dw2); Sleep(200); ResumeThread(handle1); Sleep(400); //(IV) SuspendThread(handle2); Sleep(200); ResumeThread(handle2); //(V) Sleep(500); //(VI) DWORD ec1,ec2; //退出码 GetExitCodeThread(handle1,&ec1); //获得退出线 程的退出码 GetExitCodeThread(handle2,&ec2); CloseHandle(handle1); CloseHandle(handle2); cout<<"退出码:"< return 1; } 五、总结() 这是由于系统这时要调度两个线程,很多时间开销在了线程的调度上,所以如果非必要,多线程只会浪费系统资源。