zoukankan      html  css  js  c++  java
  • 并发 --- 4 线程 守护线程 锁

    一.线程

          1.进程:资源的分配单位

         线程:cpu执行单位(实体)

      2.线程的创建和销毁开销特别小

      3.线程之间资源共享,共享的是同一个进程中的资源

      4.线程之间不是隔离的

      5.线程可不需要  main

    二.线程的创建方式

      From threading import Thread

      第一种

      

      第二种

      

    三.守护线程

      1.守护线程:等待所有非守护线程的结束才结束

      2.守护进程:主程序代码运行结束,守护进程就随之结束

    注:

      1.主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),

        然后主进程会一直等非守护的子进程都运行完毕后

        回收子进程的资源(否则会产生僵尸进程),才会结束,

      2.

    主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收)。
    因为主线程的结束意味着进程的结束,进程整体的资源都将被回收,
    而进程必须保证非守护线程都运行完毕后才能结束,

    因为进程执行结束是要回收资源的,
    所有必须确保你里面的非守护子线程全部执行完毕。

    四、计算密集型和io密集型

      io密集型时 线程效率高

      计算密集型  进程效率高

    五。锁  

      1.牺牲效率,保证数据安全

      2.死锁现象

        出现在锁嵌套的时候,双方互相抢对方已经拿到的锁,

        导致双方互相等待,

      3.递归锁(解决死锁现象)

      Rlock  首先本身就是个互斥锁,维护了一个计数器,

      每次acquire+1,release-1,当计数器为0的时候,大家才能抢这个锁

      4. gil锁  :cpython解释器上的一把互斥锁

    六.信号量,事件(同进程一样)

       

  • 相关阅读:
    Hibernate5.2之一对一主键关联(四)
    Hibernate5.2关联关系之双向一对多(三)
    Hibernate5.2关联关系之单向多对一(二)
    Hibernate5.2关联关系之单向一对多(一)
    Hibernate5.2之原生SQL查询
    Hibernate5.2之HQL查询
    Winform 按键组合键
    当Bitmap的宽度大于ImageView的最大显示宽度时对ImageView的宽高重新计算来适应Bitmap的宽高(转)
    sqlserver 函數執行動態sql語句,取值
    时间格式化 字符串转时间(转)
  • 原文地址:https://www.cnblogs.com/sc-1067178406/p/10257125.html
Copyright © 2011-2022 走看看