線程的概念:
1、在一個程序里的一個執(zhí)行路線就叫做線程。更準確的定義為:線程是“一個進程內部的控制序列”。
2、一切進程至少都有一個執(zhí)行線程。
進程和線程的區(qū)別:
1、進程是資源競爭的基本單位。
2、線程是程序執(zhí)行的最小單位。
3、線程共享進程數(shù)據(jù),但也擁有自己的一部分數(shù)據(jù)。
線程的優(yōu)點:
1、創(chuàng)建一個新線程的代價要比創(chuàng)建一個新進程的代價小得多。
2、與進程之間的切換相比,線程之間的切換需要操作系統(tǒng)做的工作要少得多。
3、線程占用的資源要比進程少得多。
4、能充分利用多處理器的可并行數(shù)量。
5、在等待慢速I/O操作結束的同時,程序可執(zhí)行其他的計算任務。
6、計算密集型應用,為了能在多處理器系統(tǒng)上運行,將計算分解到多個線程中實現(xiàn)。
7、I/O密集型應用,為了提高性能,將I/O操作重疊。線程可以同事等待不同的I/O操作。
線程的缺點:
1、性能損失
一個很少被外部事件阻塞的計算密集型線程往往無法與共它線程共享同一個處理器。如果計算密集型線程的數(shù)量比可用的處理器多,那么可能會有較大的性能損失,這里的性能損失指的是增加了額外的同步和調度開銷,而可用的資源不變。
2、健壯性降低
編寫多線程需要更全面更深入的考慮,在一個多線程程序里,因時間分配上的細微偏差或者因共享不該共享的變量而造成不良影響的可能性是很大的,換句話說線程之間是缺乏保護的。
3、缺乏訪問控制
進程是訪問控制的基本粒度,在一個線程中調用某些OS函數(shù)會對整個進程造成影響。
4、編程難度提高
編寫與調試一個多線程程序比單線程程序困難的多。
說了一些線程的基本概念后,現(xiàn)在我們來說一說線程控制,線程的創(chuàng)建、等待、終止、線程的結合與分離屬性。
1、進程的創(chuàng)建
參數(shù)
thread:返回線程ID
attr:設置線程的屬性,attr為NULL表示使用默認屬性。
start_rountine:是個函數(shù)地址,線程啟動后要執(zhí)行的函數(shù)。
arg:傳給線程啟動函數(shù)的參數(shù)
返回值:成功返回0,失敗返回錯誤碼。
2、線程等待
為什么需要線程等待?
已經退出的線程,其空間沒有被釋放,仍然在進程的地址空間內。
創(chuàng)建新的線程不會復用剛才退出線程的地址空間。
等待函數(shù)
參數(shù)
thread:線程ID
value_ptr:它指向一個指針,后者指向線程的返回值
返回值:成功返回0;失敗返回錯誤碼。
3、分離線程
默認情況下,新創(chuàng)建的線程是joinable的,線程退出后,需要對其進行pthread_join操作,否則無法釋放資源,從而造成系統(tǒng)泄露。
如果不關心線程的返回值,join是一種負擔,這個時候,我們可以告訴系統(tǒng),當線程退出時,自動釋放線程資源。
分離函數(shù)
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權利。 粵ICP備09033321號