pthread 庫學習—1:進程與線程

1. 進程與線程的關係?

    線程是進程內部的一個控制序列;

    進程內可以有多個線程/控制序列,但是進程啓動的第一個控制序列,被稱爲主線程;

   進程是資源分配的單位;線程是調度單位;


2. 使用多線程的優點?

    多線程間通信:多個線程共享進程的存儲地址空間和文件描述符;

    改善吞吐量


3. 使用多線程的缺點:

   同步處理;(比如不同的線程可以訪問同一全局變量)

   多線程調試;


4. 多線程與多進程相比較?

    context switch:進程與進程之間切換時,上下文切換(context swith)需要時間較長;


    通信:進程間通信相比多線程,比較困難和耗時;


    數據共享,同步:

         多進程:數據共享困難,需要使用IPC;數據是分離的,同步簡單;

         多線程:因共享進程數據,故共享數據簡單,但同步困難;


    可靠性:

        多進程間互不影響;

        多線程間:若其一線程崩潰,則進程崩潰


    內存,cpu:多進程佔用內存多,cpu利用率低;

  

     分佈式:

         多進程:適合多機,多核分佈式;若一臺機器不夠,可以方便的擴展到多臺機器;

         多線程:適合多核分佈式


5. 線程的結構

   一個進程中可以包括多個線程,多個線程也可以同時執行進程空間的代碼;故線程擁有自己的線程控制塊:

   線程id & 一組寄存器值 & 棧 & 調度優先級 & 策略 & 信號屏蔽字 & errno變量 & 線程私有數據;

   進程的所有信息(可執行的程序文本,全局內存和堆內存,堆棧,和文件描述符)對該進程的所有線程都是共享的。

   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章