什麼是線程?

什麼是線程

線程是程序執行的最小單元,一個標準的線程是由線程ID、當前指令指針(PC)、寄存器集合和堆棧組成。此外線程是進程中的一個實體,是被系統獨立調用和分配的基本單位。線程的運行只需要一些必不可少的資源,但它與同屬於同一個進程的其他線程共享進程所擁有的的全部資源。一個線程可以創建和銷毀另一個線程,同一進程中可以並發執行多個線程。由於線程之間相互之約,線程在運行的過程中是交替使用CPU的,所以呈現出間斷性。

線程有三種基本狀態:就緒、阻塞和運行。

可少的資源,但它與同屬於同一個進程的其他線程共享進程所擁有的的全部資源。

就緒狀態是指線程具備了運行的所有條件,在邏輯上已經是可執行的,就在等待時間一到就可以執行;運行狀態是指線正在占用處理機,正在運行中;阻塞狀態是指線程在等待另一個線程執行完成。

每個程序進程至少有一個線程,如果一個程序進程只有一個線程,那麼這個線程就是程序進程本身。

線程是程序中一個單一的順序控制流程,是在一個進程內部相對獨立、可以調度地執行單元。在單個程序中多個線程可以完成多個不同的任務,這個操作就被稱為是多線程機制,在多少的系統中多線程都可以很大程度的提升執行效率。


進程與線程

進程和線程是並發編程的基本概念,在大多數的程式語言中都有進程和線程的概念。

一個計算機系統中通常可以有多個線程和多個進程存在,但是在給定的時間內,每個處理器只能處理一個進程的任務。對於單核的處理來說,處理時間是通過時間片在進程和線程之間切換進行共享。

中的一個實體,是被系統獨立調用和分配的基本單位。線程的運行只需要一些必不

進程有一個相對獨立的執行環境,通常有一個完整的、私有的運行時間資源。每個進程都有自己獨立的內存空間,作業系統的進程表(Process Table)存儲了CPU寄存器的值、內存映射、打開的文件、統計信息和特權信息等信息。進程一般是被定義為執行中的程序,也就是當前作業系統上某個虛擬處理器上運行的一個程序。多個進程並發共享同一個CPU的硬體資源。而作業系統是支持進程之間的相對隔離,實現這種並發透明需要付出的成本也是相對較高的。

是由線程ID、當前指令指針(PC)、寄存器集合和堆棧組成。此外線程是進程

在一般情況下,進程可以看做是一個程序。但在用戶看到的一個獨立運行的程序則是由很多的進程協同完成。而大多數的作業系統都是支持進程之間通信(IPC),例如管道和Socket。IPC不僅可以用來完成同一個系統的進程通信,還可以用於不同系統之間的進程通信。

線程,被稱為是輕量級的進程,進程和線程都提供了一個執行環境,但是創建一個新的線程要比創建一個新的線程需要更少的資源。線程系統一般只維護一些用來讓多個線程共享CPU所必需的最少的信息,特別是線程上下文(Thread Context)中一般只包含CPU上下文以及某些其他線程的管理信息,通常會忽略那些對於多線程管理不必要的信息。這樣單個進程中為了防止數據遭到某些不合法線程的訪問就完全落在應用程式開發人員手中。線程不像是進程那樣彼此之間是隔離的,而且還會受到作業系統的保護,所以在多線程程序開發過程中需要開發人員時刻關注線程安全問題。

什麼是線程線程是程序執行的最小單元,一個標準的線程
聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
繼續其他精彩內容吧!
more