操作系统实验-线程的创建和撤消

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

五、总结()

这是由于系统这时要调度两个线程,很多时间开销在了线程的调度上,所以如果非必要,多线程只会浪费系统资源。

相关文档
最新文档