《多线程编程》PPT课件.ppt
《《多线程编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《多线程编程》PPT课件.ppt(11页珍藏版)》请在三一办公上搜索。
1、第5章 多线程编程,5.1 LINUX下线程概述5.2 LINUX线程实现,多线程编程,2,1线程概述 进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少上下文切换开销,进程在演变中出现了另一个概念线程。它是一个进程内的基本调度单位,也可以称为轻量级进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。因此,大大减少了上下文切换的开销。同进程一样,线程也将相关的变量值放在线程控制表中,一个进程可以有多个线程,也就是有多个线程控制表及堆栈寄
2、存器,但却共享一个用户地址空间。要注意的是,由于线程共享了进程的资源和地址空间,因此,任何线程对系统资源的操作都会给其他线程带来影响。因此,线程中的同步就是非常重要的问题了。在多线程系统中,线程与进程的关系如下表所示。,5.1 LINUX下线程概述,进程,用户地址空间,线程一,线程二,线程三,多线程编程,3,这里讲的线程相关操作都是用户空间线程的操作。在LINUX中,一般Pthread线程库是一套通用的线程库,是由POSIX提出的,因此具有很好的可移植性。1线程创建和退出(1)函数说明 创建函数实际上是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create。在线程创建以后
3、,就开始运行相关的线程函数,在该函数运行完了后,该线程也就退出了,这也是线程退出的一种方法。另一种退出线程的方法是使用函数pthread_exit,这是线程的主动行为。这里要注意的是,在使用线程函数时,不能随意使用exit退出函数进行出错处理,由于exit的作用是使调用进程终止,往往一个进程包含多个线程,因此,在使用exit 之后,该进程中的所有线程都终止了。因此,在线程中就可以使用pthread_exit 来代替进程中的exit。由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放。正如进程之间可以用wait()系统调用来同步终止
4、并释放资源一样,线程之间也有类似机制,那就是pthread_join()函数,pthread_join可以用于将当前线程挂起,等待线程的结束。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源就被收回。(2)函数格式下表列出了pthread_create函数的语法要点。,5.2 LINUX线程实现,多线程编程,4,下表列出了pthread_exit函数的语法要点。,5.2 LINUX线程实现,多线程编程,5,5.2 LINUX线程实现,下表列出了pthread_join函数的语法要点。,(3)函数使用以下实例中创建了两个线程,一个是在程序
5、运行到中途时调用pthread_exit函数退出,另一个是正常运行退出。在主程序中收集这两个线程的退出信息,并释放资源,从这个实例中可以看出,这两个线程是并发运行的。,多线程编程,6,#include#include void thread1(void)int i=0;for(i=0;i6;i+)printf(This is a pthread1.n);if(i=2)pthread_exit(0);sleep(1);void thread2(void)int i;for(i=0;i3;i+)printf(This is a pthread2.n);pthread_exit(0);int mai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程编程 多线程 编程 PPT 课件
链接地址:https://www.31ppt.com/p-5489153.html