10第10章 Linux多线程编程.pptVIP

  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第10章 Linux多线程编程.ppt

* * 获取/设置stack地址属性 * * 获取/设置栈保护区属性 第10章 Linux多线程编程 1 2 线程基本概念与线程操作 线程属性控制 3 线程调度策略 * * 调度策略 在操作系统中,调度策略主要有: FIFO先入先出原则:首先请求服务的对象首先得到CPU的处理。 最短作业优先原则:需要最小系统时间的服务首先得到处理。 最高优先级优先原则:优先级最高的服务首先得到处理。 时间轮片原则:每个任务分配一个系统时间片,轮流执行。 POSIX为线程指定了三个调度策略: SCHED_OTHER:系统默认策略。如时间轮片策略或基于优先级的调度策略。 SCHED_FIFO:先进先出原则。具有最高优先级的、等待时间最长的线程将成为下一个要执行的线程。 SCHED_RR:轮转调度。类似于FIFO,但加上了时间轮片策略。 * * 获取/设置线程属性调度属性 * * 获取/设置调度策略属性 * * 获取/设置调度策略参数属性 * * 获取/设置指定线程调度属性 * * 人民邮电出版社出版 杨宗德编著 Linux高级程序设计(第2版) 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 人民邮电出版社出版 杨宗德编著 第10章 Linux多线程编程 1 2 线程基本概念与线程操作 线程属性控制 3 线程调度策略 * * 线程与进程的对比 * * 线程资源 线程自己基本上不拥有系统资源,只拥有少量在运行中必不可少的资源(如程序计数器、一组寄存器、栈、线程信号掩码、局部线程变量和线程私有数据),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源(同一地址空间、通用的信号处理机制、数据与I/O)。 进程在使用时占用了大量的内存空间,特别是进行进程间通信时一定要借助操作系统提供的通信机制,这使得进程有自身的弱点,而线程占用资源少,使用灵活,很多应用程序中都大量使用线程,而较少的使用多进程,但是,线程不能脱离进程而存在,另外,线程的层次关系,执行顺序并不明显,对于初学者大量使用线程会增加程序的复杂度。 * * 进程/线程应用对比 应用功能 线程 进程 创建 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 通信机制 信号量、信号、互斥锁、条件变量、读写锁 无名管道、有名管道、信号、消息队列、信号量、共享内存 * * 创建线程 * * 线程退出与等待 新创建的线程从执行用户定义的函数处开始执行,直到出现以下情况时退出: 调用pthread_exit函数退出。 调用pthread_cancel函数取消该线程。 创建线程的进程退出或者整个函数结束。 其中的一个线程执行了exec类函数执行新的进程。 * * 等待线程 * * 取消线程 取消线程是指取消一个正在执行线程的操作,当然,一个线程能够被取消并终止执行需要满足以下条件: 该线程是否可以被其它取消,这是可以设置的,在Linux系统下,默认是可以被取消的,可用宏分配是PTHREAD_CANCEL_DISABLE和PTHREAD_CANCEL_ENABLE; 该线程处于可取消点才能取消。也就是说,该线程被设置为可以取消状态,另一个线程发起取消操作,该线程并不是一定马上终止,只能在可取消点才中止执行。可以设置为立即取消和在取消点取消。可用宏为PTHREAD_CANCEL_DEFERRED和PTHREAD_CANCEL_ASYNCHRONOUS。 * * pthread_cancel() * * 设置可取消状态 可设置的state的合法值: 如果目标线程的可取消性状态为PTHREAD_CANCEL_DISABLE,则针对目标线程的取消请求将处于未决状态,启用取消后才执行取消请求。 如果目标线程的可取消性状态为PTHREAD_CANCEL_ENABLE,则针对目标线程的取消请求将被传递。默认情况下,在创建某个线程时,其可取消性状态设置为PTHREAD_CANCEL_ENABLE。

文档评论(0)

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

该用户很懒,什么也没介绍

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档