- 線程是進程的進化產物,是進程內獨立的一條運行路線,是處理器調度的最小單元(別稱爲:輕量化進程)
- 一個進程可以有多個線程,也就是說可以有多個線程控制表及堆棧寄存器,但卻共享同一個用戶地址空間。
- 線程根據其調度者可以分爲用戶級線程、內核線程(輕量化線程)和核心機線程
- 用戶級線程主要解決的是上下文的切換問題,它的調度算法和調度過程全部由用戶自行選擇決定,在運行時不需要特定的內核支持
- 用戶級的線程的缺點:在一個進程中的多個線程的調度中無法發揮多處理器的優勢!(使用內核線程)
- 使用線程的優勢:使用線程可以大大加快上下文的切換速度,而且節省更多資源
- 使用線程的缺點:線程在用戶態和內核態都需要調度管理,增加實現的複雜度和引起優先級翻轉的可能性(一個多線程程序的同步設計與調試也會增加程序實現的難度!爲了節約系統調度的開銷,這點麻煩是值得的)
- 線程編譯時選項:-pthread(線程函數庫) -lpthread(POSIX現成庫)
- 線程的同步機制:互斥鎖、信號量(一般而言,資源數爲一時使用互斥鎖、資源數爲多個時使用信號量)
- 互斥鎖分爲:快速互斥鎖(阻塞版本)、遞歸互斥鎖、檢錯互斥鎖(費阻塞版本)
- 線程的退出方式:a、線程運行完了自動退出;b、使用pthread_exit();(線程主動行爲退出)
- 線程創建函數中的第二個參數爲線性的屬性:當參數爲NULL是線程屬性爲默認參數、
- 線程參數包含:a、綁定屬性;b、分離屬性;c、堆棧地址;d、堆棧大小以及優先級。
翻譯
1. attribute:屬性