《Linux编程及应用-任继平》10第10章 Linux多线程编程.pptVIP

《Linux编程及应用-任继平》10第10章 Linux多线程编程.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 Linux多线程编程 1 2 线程基本概念与线程操作 线程属性控制 3 线程调度策略 2017-4-11 2 线程与进程的对比 2017-4-11 3 线程资源 线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。 进程在使用时占用了大量的内存空间,特别是进行进程间通信时一定要借助操作系统提供的通信机制,这使得进程有自身的弱点,而线程占用资源少,使用灵活,很多应用程序中都大量使用线程,而较少的使用多进程,但是,线程不能脱离进程而存在,另外,线程的层次关系,执行顺序并不明显,对于初学者大量使用线程会增加程序的复杂度。 2017-4-11 4 进程/线程应用对比 应用功能 线程 进程 创建 pthread_create fork,vfork 退出 pthread_exit exit 等待 pthread_join wait、waitpid 取消/终止 pthread_cancel abort 读取ID pthread_self() getpid() 调度策略 SCHED_OTHER、SCHED_FIFO、SCHED_RR SCHED_OTHER、SCHED_FIFO、SCHED_RR 通信机制 信号量、信号、互斥锁、条件变量、读写锁 无名管道、有名管道、信号、消息队列、信号量、共享内存 2017-4-11 5 创建线程 2017-4-11 6 线程退出与等待 新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出: 调用pthread_exit函数退出。 调用pthread_cancel函数取消该线程。 创建线程的进程退出或者整个函数结束。 其中的一个线程执行了exec类函数执行新的进程。 2017-4-11 7 等待线程 2017-4-11 8 取消线程 取消线程是指取消一个正在执行线程的操作,当然,一个线程能够被取消并终止执行需要满足以下条件: 该线程是否可以被其它取消,这是可以设置的,在Linux系统下,默认是可以被取消的,可用宏分配是PTHREAD_CANCEL_DISABLE和PTHREAD_CANCEL_ENABLE; 该线程处于可取消点才能取消。也就是说,该线程被设置为可以取消状态,另一个线程发起取消操作,该线程并不是一定马上终止,只能在可取消点才中止执行。可以设置为立即取消和在取消点取消。可用宏为PTHREAD_CANCEL_DEFERRED和PTHREAD_CANCEL_ASYNCHRONOUS。 2017-4-11 9 pthread_cancel() 2017-4-11 10 设置可取消状态 可设置的state的合法值: 如果目标线程的可取消性状态为PTHREAD_CANCEL_DISABLE,则针对目标线程的取消请求将处于未决状态,启用取消后才执行取消请求。 如果目标线程的可取消性状态为PTHREAD_CANCEL_ENABLE,则针对目标线程的取消请求将被传递。默认情况下,在创建某个线程时,其可取消性状态设置为PTHREAD_CANCEL_ENABLE。 2017-4-11 11 设置取消类型 pthread_setcanceltype()函数用来设置取消类型,即允许取消的线程在接收到取消操作后是立即中止还是在取消点中止,该函数声明如下: extern int pthread_setcanceltype (int __type, int *__oldtype) 此函数有两个参数,type为调用线程的可取消性类型所要设置的值。oldtype为存储调用线程原来的可取消性类型的地址。type的合法值包括: 如果目标线程的可取消性状态为PTHREAD_CANCEL_ASYNCHRONOUS,则可随时执行新的或未决的取消请求。 如果目标线程的可取消性状态为PTHREAD_CANCEL_DEFERRED,则在目标线程到达一个取消点之前,取消请求将一直处于未决状态。 在创建某个线程时,其可取消性类型设置为PTHREAD_CANCEL_DEFERRED。 第10章 Linux多线程编程 1 2 线程基本概念与线程操作 线程属性控制 3 线程调度策略 2017-4-11 13 线程资源 线程只拥有少量在运行中必不可少的资源,主要包括: 程序计数器:标识当前线程执行的位置; 一组寄存器:当前线程执行的上下文内容; 栈:用于实现函数调用、局部变量。因此,局部变量是私有的; 线程信号掩码:因此可以设置每线程阻塞的信号,见本书下一章内容; 局部线程变量:在栈中申请的数据; 线

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档