Linux系統程式設計 執行緒基礎

2021-09-18 01:41:27 字數 941 閱讀 7657

執行緒的概念

執行緒是程序內部的一條執行序列,或者執行流。每個程序至少有一條執行緒,稱之為主線程。從**的角度看,就是main函式的函式體。在主線程中可以通過執行緒庫建立其他函式執行緒。在同乙個程序中的執行緒都是併發執行的,並且執行緒的執行順序由系統決定。

主線程和函式執行緒沒有本質的區別,只是主線程是程序執行時的第一條執行緒。主線程預設結束,結束的是整個程序。

執行緒的實現方式

執行緒的實現方式有三種:使用者級、核心級、混合模式。

使用者級執行緒:執行緒的建立、排程、銷毀都在使用者空間完成,核心只會識別其為乙個程序。同時,使用者態維護了乙個執行緒表來管理執行緒。

優點:1.靈活性強,作業系統不知道執行緒的存在,在任何平台上都可以執行;2.執行緒的切換在使用者空間完成,不需要陷入核心,速度較快;3.不用修改作業系統,核心實現簡單。

缺點:1.程式設計複雜,使用者必須自己管理執行緒,包括執行緒排程;2.如果乙個執行緒阻塞,整個程序都會阻塞;3.不能使用對稱多處理器。

核心級執行緒:執行緒的建立、管理、銷毀由作業系統核心完成。

優點:1.核心執行緒使得使用者程式設計簡單;2.一條執行緒阻塞,作業系統可以立馬切換到另一條執行緒,整個程序不會阻塞。

缺點:1.核心實現複雜,需要支援多執行緒;2.執行緒切換效率低,每次切換必須陷入核心。

混合執行緒:執行緒一部分由使用者建立,一部分由核心建立,是乙個多對多的關係,結合了使用者級和核心級的優點。

程序和執行緒的區別

1.執行緒是cpu排程的最小單位,程序是資源分配的最小單位。

2.程序是執行緒的集合。程序中包含資料、資源,乙個程序中的所有執行緒共享程序的資料、資源。

3.執行緒建立、管理代價小。執行緒排程、切換效率較高。

linux系統程式設計 執行緒

include int pthread create pthread t thread,const pthread attr t attr,void start routine void void arg include include include include include include...

《Linux系統程式設計 執行緒池》

在傳統伺服器結構中,常是有乙個總的監聽執行緒監聽有沒有新的使用者連線伺服器,每當有乙個新的使用者進入,伺服器就開啟乙個新的執行緒使用者處理這 個使用者的資料報。這個執行緒只服務於這個使用者,當使用者與伺服器端關閉連線以後,伺服器端銷毀這個執行緒。然而頻繁地開闢與銷毀執行緒極大地占用了系統的資源,而且...

linux 系統程式設計 5 執行緒

目錄7.3 設定執行緒屬性 參考乙個程序至少需要乙個執行緒作為它的指令執行體,程序管理著資源 比如cpu 記憶體 檔案等等 而將執行緒分配到某個cpu上執行 新的執行執行緒將擁有自己的棧,但與它的建立者共享全域性變數 檔案描述符 訊號處理函式和當前目錄狀態 特點 使用pthread create建立...