多線程編程預習

1.何謂線程

線程是進程的一個實體,死cpu調度很分派的基本單位,它是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點運行中必不可少的資源,但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。

 

2.一個線程包含的內容

1.一個指向當前被執行命令的指令指針。

2.一個棧

3.一個寄存器值的集合,定義了一部分描述正在執行線程的處理器狀態的值。

4.一個私有的數據區。

 

3.爲什麼要引入線程的概念

1.在許多應用中會同時發生多種活動,某些活動會隨着時間的推移被阻塞,通過將這些應用程序分解成可以準並行運行的多個順序線程,程序設計模型會變得簡單起來。

2.由於線程比進程更輕量級,所以他們更容易(更快)創建和撤銷,在一般情況下,創建一個線程比創建一個 進程要快上10100倍,在有大量線程需要動態和快速修改時,具有這一特性是非常重要的。

3.在性能方面,若多個線程都是cpu密集型,那麼多線程並不能很明顯地體現出它的性能提升,但是在一些需要大量IO處理和大量計算的情況下,擁有多線程允許這些活動被彼此重疊進行,對程序性能的提升是非常明顯的。

4.在多cpu系統中,多線程是有益的,在這樣的系統中,可以真正實現物理上的多線程並行運行。

 

4.多線程的優點

1.多線程使得程序的響應速度更快,因爲用戶界面可以在進行其他工作的同時一直處於活動狀態。

2.當前沒有進行處理的任務時可以將處理器的時間讓給其他任務。

3.佔用大量處理時間的任務可以定期將處理器時間讓給其他他任務

4.可以隨時停止任務

5.可以分別設置各個任務的優先級一優化性能

 

5.什麼情況下最適合用多線程處理

1.耗時或大量佔用處理器任務阻塞用戶界面操作

2.各個任務必須等待外部資源(如遠程文件或Internet連接)

 

6.多線程開發的最基本概念

1.線程,又分創建,退出,等待

2.互斥鎖,包括創建,銷燬,加鎖和解鎖

3.條件操作,包括創建,銷燬,觸發,廣播和等待。

 

7.線程退出的方式有哪些

1.線程從執行函數返回,返回值是線程的退出碼

2.線程被統一進程的其他線程取消

3.調用pthread_exit()函數退出。

 

8.如何理解互斥鎖

本質上講,互斥量是一把鎖,該鎖保護一個或者一些資源(內存或者文件句柄等數據),一個線程如果需要訪問該資源,必須要獲得互斥量並對其加鎖,這是如果其他線程想訪問該資源也必須要獲得該互斥量,但是鎖已經加鎖,所以這些進程只能阻塞,直到獲得該鎖的線程解鎖,這是阻塞的進程裏面有一個線程獲得該互斥量並加鎖,獲准訪問該資源,其他的線程繼續阻塞,周而復始。

 

9.互斥鎖的分類

1.快速性:默認的類型。

2.遞歸型:若遇到死鎖,同一線程循環給互斥量上鎖,系統將會知道該上鎖行爲來自同一線程,那麼就會同意線程給該互斥量上鎖。

錯誤檢測型:如果該互斥量已經被上鎖,那麼後續的上鎖將會失敗而不會阻塞,pthread_mutex_lock()操作將會返回EDEADL

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