自我修養的筆記系列 2 執行緒基礎

2021-10-08 10:21:25 字數 1084 閱讀 6711

執行緒的定義: 有時被稱為輕量級的程序(lightweight process,lwp),是程式執行流的最小單元

組成:

執行緒id

當前指令指標(pc)

暫存器集合堆疊

可多個併發執行, 共享程序的全域性變數和堆的資料

優點:

分離計算和互動,有效利用某些等待操作的時間

現在主流計算機本身硬體支援

高效的資料共享

可以訪問程序記憶體裡的所有資料

其它執行緒的堆疊(已知其它執行緒的堆疊位址)

私有儲存空間,包括:

棧執行緒區域性儲存(thread local storage, tls), 容量有限

暫存器(執行流的基本資料)

執行緒私有

執行緒共享

區域性變數

全域性變數

函式的引數

堆上的資料

tls資料

函式裡的靜態變數

程式**,開啟的檔案

執行緒的排程是由於處理器數量小於執行緒數量的情況下, 某個處理器需要執行多個執行緒以模擬併發狀態從而需要排程不同執行緒的執行狀態(三種):

執行(running): 執行緒正在執行

就緒(ready): 執行緒可以立即執行,但cpu被占用

等待(waiting): 執行緒正在等待某個時間(通常時i/o),無法執行

時間片(time slice)的引入

主流的排程方式大多都包含:

輪轉法(round robin):執行緒按照某一順序輪流執行一小段時間

優先順序排程(priority schedule):執行順序的前後,有三種指定方式

使用者指定

根據進入等待狀態的頻繁程度

長時間得不到執行而被提公升優先順序

io bound thread: io密集型執行緒(更易獲得優先順序提公升)

cpu bound thread:cpu密集型執行緒

餓死(starvation):低優先順序的執行緒總是得不到cpu資源。

解決餓死:逐步提公升等待時長的執行緒

時間片用完交出cpu,preemption。

執行緒主動放棄執行與否:

可搶占執行緒

不可搶占執行緒

程式設計師的自我修養 4 執行緒基礎

1.執行緒 執行緒 thread 有時被稱為輕量級程序 lightweight process lwp 是程式執行流的最小單元。個標準的執行緒由執行緒丨d 當前指令指標 pc 暫存器集合和堆疊組成 通常意義上 乙個程序由乙個到多個執行緒組成 各個執行緒之間共亨程式的記憶體空間 包括 段 資料段 堆等...

《程式設計師的自我修養》筆記

以下是我讀此書時作的一些筆記,當然書中還有很多值得參考的想法,就不一一枚舉了。一萬小時說法 這個說法很普遍了,它再次提醒了我如何去做乙個領域的專家。如果平均每天八小時在這個領域上,那麼一年300天 300 8 2400,保持這種學習激情在上面,五年內就可以成為專家了,我算了算自己在這個領域投入的時間...

讀書筆記 韭菜的自我修養

韭菜的定義 指的是在交易市場沒賺到錢甚至賠錢的勢單力薄的 韭菜的特徵 他們缺乏嚴重的閱讀能力,他們是那種買一輩子產品不讀產品說明的人,他們是那種無論拿到什麼,都要問被人怎麼用的人。兩條定律 1 連你都知道進場的時候,牛市就要結束了。2 你就幹看著,啥都不買,等到熊市,別人都開始罵娘的時候,再開始買買...