设为首页 收藏本站
查看: 1083|回复: 0

[经验分享] python并发编程之多线程理论部分

[复制链接]

尚未签到

发表于 2018-8-13 07:19:44 | 显示全部楼层 |阅读模式
开启一个字处理软件进程,该进程办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘。  这三个任务操作的都是同一块数据,因而不能用多进程。
  只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自动保存,自动保存时又不能输入和处理文字。
  六、经典的线程模型(了解)
  七、POSIX线程(了解)
  八、在用户空间实现的线程(了解)
  线程的实现可以分为两类:用户级线程(User-Level Thread)和内核级线程(Kernel-Level Thread),后者又称为内核支持的线程或轻量级进程。
  在多线程操作系统中,各个系统的实现方式并不相同,在有的系统中实现了用户级线程,有的系统中实现了内核级线程。
  用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。
  九、在内核空间实现的线程(了解)
  内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;
  这样可以很好的利用smp,即利用多核cpu。windows线程就是这样的。
  十、用户级与内核级线程的对比(了解)
  1、以下是用户级线程和内核级线程的区别:
  内核级线程是OS内核可感知的,而用户级线程是OS内核不可感知的。
  用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
  用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
  在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。
  用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。
  2、内核线程的优缺点
  优点:当有多个处理机时,一个进程的多个线程可以同时执行。
  缺点:由内核进行调度。
  3、用户进程的优缺点
  优点:线程的调度不需要内核直接参与,控制简单。
  可以在不支持线程的操作系统中实现。
  创建和销毁线程、线程切换代价等线程管理的代价比内核线程少得多。
  允许每个进程定制自己的调度算法,线程管理比较灵活。
  线程能够利用的表空间和堆栈空间比内核级线程多。
  同一进程中只能同时有一个线程在运行,如果有一个线程使用了系统调用而阻塞,那么整个进程都会被挂起。另外,页面失效也会产生同样的问题。
  缺点:资源调度按照进程进行,多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用
  十一、混合实现(了解)
  用户级与内核级的多路复用,内核同一调度内核线程,每个内核线程对应n个用户线程

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550869-1-1.html 上篇帖子: python自动化运维之多进程 下篇帖子: 第九篇 Python网络编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表