linux多线程编程.ppt
《linux多线程编程.ppt》由会员分享,可在线阅读,更多相关《linux多线程编程.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、www.chinaEDA.cnlinux多线程编程1.1.LinuxLinux下下线程线程概述2.2.linuxlinux线程线程实现www.chinaEDA.cn1、Linux下线程概述概述进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段。线程通常叫做轻型的进程。线程是在共享内存空间中并发执行的多道执行路径,他们共享一个进程的资源。因为线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源。www.chinaEDA.cn用户地址空间线程一线程二线程三进 程图1 进程与线程的关系www.chinaEDA.cn线程按照其调度者可分为用户级线程和内核级线程两种
2、。(1)用户级线程主要解决的是上下文切换的问题,其调度算法和调度过程全部有用户决定。(2)内核级线程有内核调度机制实现。现在大多数操作系统都采用用户级线程和内核级线程并存的方法。用户级线程可与内核级线程实现“一对一”,“一对多”的对应关系。www.chinaEDA.cn2、linux线程实现线程实现以下线程均为用户级线程。在linux中,一般采用Pthread线程库实现线程的访问与控制,由POSIX提出,具有良好的可移植性。www.chinaEDA.cn2.1 线程创建与退出线程创建与退出创建线程使用pthread_create函数。在线程创建以后,就开始运行相关的线程函数。线程退出时使用函数
3、pthread_exit,是线程的主动行为。注意进程退出时使用exit函数,线程中用pthread_exit替代exit。由于一个进程中的多个线程共享数据段,因此通常在线程退出后,退出线程所占用的资源并不会随线程结束而释放。所有需要pthread_join函数来等待线程结束,类似于wait系统调用。www.chinaEDA.cn创建进程:#include pthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg)thread:线程标识符attr:线程属性设置start_ro
4、utine:线程函数起始地址arg:传递给start_routine的参数www.chinaEDA.cn进程退出:#include pthread_exit(void*retval)retval:pthread_exit调用者线程的返回值,可由其他函数和pthread_join来检测获取。www.chinaEDA.cn等待进程退出:#include pthread_join(pthread_t*th,void*thread_return)th:等待线程的标识符thread_return:用户定义指针,用来存储被等待线程的返回值线程实例见:thread.cwww.chinaEDA.cn2.2 修
5、改线程属性修改线程属性在thread_creat函数中有设置线程属性参数,这些属性包括绑定属性、分离属性、堆栈地址、堆栈大小、优先级。系统默认属性为非绑定、非分离、缺省1M的堆栈、与父进程同样级别的优先级。分别介绍绑定属性和分离属性。www.chinaEDA.cn1、绑定属性 在linux系统中,可实现一个用户级线程与一个内核级线程相对应的“一对一”线程机制。绑定属性是指一个用户级线程固定的分配给一个内核级线程。非绑定属性则是指用户级线程与内核级线程的关系不是始终固定的,而是由系统来控制分配。www.chinaEDA.cn2、分离属性 分离属性是用来决定一个线程以什么样的方式来终止自己。在非分
6、离情况下,当一个线程结束时,它所占用的系统资源并没有完全释放,也没有真正终止。只有当pthread_join()函数返回时,该线程才释放自己占用的资源。而在分离情况下,一个线程结束时会立即释放它所占用的资源。www.chinaEDA.cn3、属性设置属性设置是由一定函数来完成的,通常调用pthread_attr_init函数进行初始化。设置绑定属性的函数为pthread_attr_setscope,设置分离属性的函数是pthread_attr_setdetachstate,设置线程优先级的相关函数pthread_attr_getschdparm(获取线程优先级)和pthread_attr_se
7、tschedparam(设置线程优先级)。在设置完成属性后,调用pthread_creat函数创建线程。www.chinaEDA.cn线程属性初始化:#include int pthread_attr_init(pthread_attr_t*attr)attr:线程属性返回值:成功0,错误-1。www.chinaEDA.cn设置绑定属性:#include pthread_attr_setscope(pthread_attr_t*attr,init scope)attr:线程属性scope:PTHREAD_SCOPE_SYSTEM(绑定)PTHREAD_SCOPE_PRCESS(非绑定)返回值:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 多线程 编程
限制150内