線程和進程基礎知識迴歸

  1. 什麼是線程?

線程可以理解爲輕量級的進程,是程序執行流的最小單元,一個標準的線程由線程ID、當前指令指針、寄存器集合和堆棧組成。通常意義上,一個進程由多個線程組成,各個線程之間共享程序的內存空間(包括代碼、數據段、堆等)以及一些進程級的資源。

線程的訪問權限

線程調度與優先級

線程調度的狀態:運行:就緒和等待

線程具有優先級,同時可以分爲搶佔式線程和不可搶佔式線程.

 

Linux的多線程

Linux對多線程的支持頗爲貧瘠,事實上,在Linxu內核中並不存在真正意義上的線程概念.Linux將所有的執行實體都成爲任務.每個任務都類似於一個單線程的進程,具有內存空間,執行實體和文件資源等.Linux不同任務可以選擇共享內存,共享內存的任務構成了一個進程.

fork函數產生一個和當前完全一樣的新進程,並和當前進程一樣從fork函數返回.在fork函數調用之後,新的任務啓動並和本任務一起從fork函數返回.但不同的是,本人的fork將返回新任務pid,而新任務的fork將返回0. fork只產生任務的鏡像,需要執行exec配合才能啓動新的任務.

fork和exec一般只產生新的任務,如果要產生新進程,需要使用clone.

線程安全

競爭與原子操作

 

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