一、線程的概念
典型的UNIX進程可以看成只有一個控制線程:一個進程在同一時刻只做一件事。有了多個控制線程后,在程序設計時可以把進程設計成在同一時刻能夠做不止一件事,每個線程處理各自獨立的任務
二、線程的優點
通過為每種事件類型分配單獨的處理線程,可以簡化處理異步事件的代碼。每個線程在進行事件處理時可以采用同步編程模式,同步編程模式要比異步編程模式簡單得多
同一進程多個線程可以自動的共享相同的存儲地址空間和文件描述符
有些問題可以分解從而提高整個程序的吞吐量。在只有一個控制線程的情況下,一個單線程進程要完成多個任務,只需要把這些任務串行化。但是有多個控制線程時,相互獨立的任務的處理就可以交叉進行,此時只需要為每個任務分配一個單獨的線程。當然只有在兩個任務的處理過程相互不依賴的情況下,兩個任務才可以交叉執行
交互的程序同樣可以通過多線程來改善響應事件,多線程可以把程序中處理用戶輸入輸出的部分與其他部分分開
三、線程的其它特點
有些人把多線程的程序設計與處理器或多核系統聯系起來。但是即使程序運行在單處理器上,也能得到多線程編程模型的好處。處理器的數量并不影響程序結構,所以不管處理器的個數多少,程序都可以通過使用線程得以簡化。而且,即使多線程程序在串行化任務時不得不阻塞,由于某些線程在阻塞時還有另一些線程可以運行,所以多線程在單處理器上運行還是可以改善響應時間和吞吐量
每個線程都含有表示執行環境所必須的信息:其中包括進程中標識線程的線程ID, 一組寄存器值、棧、調度優先級和策略