zoukankan      html  css  js  c++  java
  • python并发编程:多线程-线程理论

    一 什么是线程

      在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程

      线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于CPU),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。

      

    所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是CPU上的执行单位。

      多新村(即多个控制线程)的概念时:在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。例如:深圳地铁和广州地铁是不同的进程,而深圳地铁里的2号线是一个线程,深圳地铁所有的线路共享深圳地铁所有的资源,比如所有的乘客可以被所有线路拉。

    二 线程和进程的区别

    1、同一个进程内的多个线程共享改进程内的地址资源
    2、创建线程的开销远小于进程的开销(创建一个进程,就是创建一个车间,涉及到申请空间,而且该空间内至少一条流水线,但创建线程,就只是一个车间内造一条流水线,无需申请空间,所以创建开销小)
    

      

    三 多线程应用举例

      开启一个字处理软件进程,该进程肯定需要办不止一件事情,比如监听键盘输入,处理文字,定时自动将文字保存到硬盘,这三个任务操作的都是同一块数据,因而不能用多进程。只能在一个进程里并发地开启三个线程,如果是单线程,那就只能是,键盘输入时,不能处理文字和自动保存,自动保存时又不能输入和处理文字。

  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/mike-liu/p/9279633.html
Copyright © 2011-2022 走看看