Linux多執行緒學習筆記 1

2021-09-19 10:39:45 字數 963 閱讀 6609

smp意為多程序對稱處理,用來指代多個處理器可以共享同一記憶體和各種io裝置的硬體架構,如果乙個處理器有多個核心,那麼smp會把每個核心作為乙個處理器來對待。

每乙個任務(作業系統排程的最小單位)只能在同乙個處理器執行,不存在同一任務在多個處理器上同時執行,原因是每個處理器可以處理任意乙個任務,無論這個任務的資料在記憶體的哪個位置,其目的是為任務的排程提供靈活性。

優點:可以通過多個處理器併發處理來達到增加處理速度的目的

缺點:同一塊記憶體資料可能出現在多個處理器的快取記憶體中(考慮多程序共享記憶體的情景),因此存在資料一致性的問題,這會潛在的影響併發效率。此外,當任務從乙個處理器遷移到另外乙個處理器時(考慮到各個處理器需要負載均衡),資料的轉移會產生額外開銷。這些缺點需要作業系統進行優化處理才能避免效能出現問題。

smt指代多執行緒併發執行處理,該技術用來增加超標量cpu的總體執行效率,通過允許多個執行緒在同乙個核心併發執行來更好的利用現代處理器架構提供的資源。

優點:加速程式整體執行效率

缺點:多個執行緒的共享資源會導致瓶頸,這需要程式設計師通過編寫合理的程式來盡可能的規避這個問題。事實上,在一些場景下,多執行緒效率反而不如單執行緒,因此需要程式根據不同的應用場景進行大量測試來確保多執行緒的效率。

該技術與smt的目的一致,通過併發執行的執行緒改進程式的總體效率。但是具體的方法與smt不同,同一時刻,任意乙個處理的pipeline僅能執行乙個執行緒,而smt允許任意乙個pipeline執行來自不同執行緒的指令。所謂pipeline就好比是cpu併發執行的流水線,非超標量cpu僅有一條,而超標量cpu有多條。世界上第乙個實現超標量的現代cpu就是2023年發布的奔騰4處理器。

由於多執行緒根本上是底層硬體的支援,因此學習多執行緒首先要了解底層的硬體架構,然後是上層作業系統對執行緒的實現,再對比執行緒和程序的實現上的具體區別,這樣才能根據不同的場景寫出最佳效能的程式。

多執行緒學習筆記(1)

很久之前在east演算法裡面見到了多執行緒,一直沒太注意,現在想利用零碎時間學習一下,現在進入我們的第一課。多執行緒就是多個任務分給多個人做,這裡讓我們看幾個用到的函式 import threading import time from queue import queue defthread jo...

linux多執行緒學習筆記

1.乙個程序中的所有執行緒都可以訪問該程序的組成部件,如檔案描述符和記憶體。2.在乙個程序中採用多執行緒程式設計可以改善響應時間和提高系統吞吐量。3.程序的所有資訊對該程序的所有執行緒都是共享的,包括可執行的程式文字,程式的全域性記憶體和堆記憶體,棧以及檔案描述符。4.執行緒id用pthread t...

多執行緒筆記1

1.如果不額外開設執行緒,訊息迴圈和訊息處理函式在乙個執行緒裡執行 2.exitthread介紹執行緒本身 void exitthread dword dwexitcode parameters dwexitcode in exit code for the calling thread.use t...