linux_c 開發(6-1)多線程程序設計_線程基礎

多線程

線程(thread)技術早在60年代就被提出來了,但真正應用多線程到操作系統中去,實在80年代中期,solaris是這方面的佼佼者。傳統的UNIX也支持線程的概念,但是在一個進程中只允許有一個線程,這樣多線程就意味着多進程。現在多線程技術已經被許多操作系統所支持,包括Windows/NT、Linux。
優點:
和進程相比,它是一種非常“節儉”的多任務操作方式。在linux系統下,啓動一個新的進程必須分配給他獨立的空間地址,建立衆多的數據表來維護他的代碼段、堆棧段和數據段,這是一種昂貴的多任務工作方式。

運行於同一個進程中的多個線程,他們之間使用的是相同的地址空間,而且線程之間的彼此切換所需的時間遠遠小於進程間切換所需的時間。據統計一個進程的開銷大概是一個線程開銷的30倍左右。

使用多線程的理由之二是;
線程間方便的通信機制。對不同的進程來說,他們具有獨立的數據空間,要進行數據的傳遞只能通過進程間通信的方式進行,這種方式不僅耗時,而且很不方便。線程不然,由於同一進程下的線程之間共享數據空間所以一個線程的數據可以直接給其他線程使用,這樣不僅快捷,而且很方便。

除了以上所說的優點外,多線程程序作爲一種多任務、併發的工作方式,有如下優點:
1、使用CPU系統更加有效,。操作系統會保證當線程數不大於CPU數目時,不同的線程運行於不同的CPU上。
2、改善程序結構。一個長又複雜的進程可以考慮分爲多個線程,分成幾個獨立或半獨立的運行部分,這種程序會利於理解和修改。

linux系統下的多線程遵循posix線程接口,稱爲pthread。編寫linux下的多線程程序,需要使用頭文件pthread.h,連接時需要使用庫libpthread.a

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