欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

操作系统实验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函数可以控制线程的运行时间,三个线程间的运行状态不互相影响
相关标签: 课程学习记录