操作系统实验1 线程的创建与撤销
程序员文章站
2022-06-19 17:01:23
...
实验Ⅰ 线程的创建与撤销
一、实验目的
掌握线程的创建与撤销方法
二、实验准备
*1.创建线程:
CreateThread()完成线程的创建,它在调用进程的地址空间上创建一个线程,执行指定的函数,并返回新建立的线程的句柄。
*2.撤销线程:
ExitThread()函数 ,强制线程终止运行;该函数将终止线程的运行,并导致操作系统清除该线程使用的所有操作系统。 C++资源(如C++类对象)将不被撤销。
*3.终止线程:
TerminateThread()函数也能终止线程的运行,该函数与ExitThead()区别在于,ExitThread()在撤销线程时将该线程所拥有的资源全部归还给系统,而TerminateThread()不归还资源。
*4.关闭句柄
CloseHandle()用于关闭已打开的对象的句柄,其作用与释放动态申请的内存空间类似,这样可以释放系统资源,使线程安全运行。
三、实验内容
(一)实验内容
(1)熟悉windows 系统提供的线程的创建与撤销系统调用。
(2)掌握windows系统环境下线程的创建与撤销方法。
(二)主要代码
休眠函数:
void eatApple(int apple_number){
Sleep((3 - apple_number) * 1000);
printf("I am eatting apple #%d.\n", apple_number);
while(1){
printf("#%d is exiting.\n\n",apple_number);
ExitThread(0);
}
}
主函数主要代码:
handle1=CreateThread((LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) eatApple,
(LPVOID) a,
0,
&ThreadID2);
handle2=CreateThread((LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) eatApple,
(LPVOID) b,
0,
&ThreadID2);
四、实验结果与总结
1.由于sleep函数的介入,运行顺序被更改。
2.我们可以通过CreateThread()创建线程,ExitThread()函数撤销线程。
3.多线程环境下,线程之间的运行是同时进行的,通过sleep函数可以控制线程的运行时间,三个线程间的运行状态不互相影响
推荐阅读