天天看點

并發 --- 4 線程 守護線程 鎖

一.線程

      1.程序:資源的配置設定機關

     線程:cpu執行機關(實體)

  2.線程的建立和銷毀開銷特别小

  3.線程之間資源共享,共享的是同一個程序中的資源

  4.線程之間不是隔離的

  5.線程可不需要  main

二.線程的建立方式

  From threading import Thread

  第一種

  

并發 --- 4 線程 守護線程 鎖

  第二種

并發 --- 4 線程 守護線程 鎖

三.守護線程

  1.守護線程:等待所有非守護線程的結束才結束

  2.守護程序:主程式代碼運作結束,守護程序就随之結束

注:

  1.主程序在其代碼結束後就已經算運作完畢了(守護程序在此時就被回收),

    然後主程序會一直等非守護的子程序都運作完畢後

    回收子程序的資源(否則會産生僵屍程序),才會結束,

  2.

并發 --- 4 線程 守護線程 鎖

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

  io密集型時 線程效率高

  計算密集型  程序效率高

并發 --- 4 線程 守護線程 鎖

五。鎖  

  1.犧牲效率,保證資料安全

并發 --- 4 線程 守護線程 鎖

  2.死鎖現象

    出現在鎖嵌套的時候,雙方互相搶對方已經拿到的鎖,

    導緻雙方互相等待,

并發 --- 4 線程 守護線程 鎖

  3.遞歸鎖(解決死鎖現象)

  Rlock  首先本身就是個互斥鎖,維護了一個計數器,

  每次acquire就+1,release就-1,當計數器為0的時候,大家才能搶這個鎖

并發 --- 4 線程 守護線程 鎖

  4. gil鎖  :cpython解釋器上的一把互斥鎖

并發 --- 4 線程 守護線程 鎖

六.信号量,事件(同程序一樣)