典型的UNIX進程可以看成只有一個控制線程:一個進程在同一時刻只做一件事情。有了多個控制線程(或簡稱為線程)以后,在程序設計時可以把進程設計成在同一時刻能夠做不止一件事,每個線程處理各自獨立的任務。這種方法有很多好處:
有些人把多線程的程序設計與多處理器系統聯系起來,但是即使程序運行在單處理器上,也能得到多線程編程模型的好處。處理器的數量并不影響程序結構,所以不管處理器的個數是多少,程序都可以通過使用線程得以簡化。而且,即使多線程程序在串行化任務時不得不阻塞,由于某些線程在阻塞的時候還有另外一些線程可以運行,所以多線程程序在單處理器上運行仍然能夠改善響應時間和吞吐量。
線程包含了表示進程內執行環境必需的信息,其中包括進程中標識線程的線程ID、一組寄存器值、棧、調度優先級和策略、信號屏蔽字、errno變量以及線程私有數據。進程的所有信息對該進程的所有線程都是共享的,包括可執行的程序文本、程序的全局內存和堆內存、棧以及文件描述符。
我們將要討論的線程接口來自POSIX.1-2001。線程接口(也稱為“pthread”或“POSIX線程”)在POSIX.1-2001中是一個可選特征。POSIX線程的特征測試宏是_POSIX_THREADS,應用程序可以把這個宏用于#ifdef測試,以在編譯時確定是否支持線程;也可以把_SC_THREADS常數用于調用sysconf函數,從而在運行時確定是否支持線程。
本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。
新聞熱點
疑難解答