併發程式設計 2 執行緒管理

2022-03-14 19:57:15 字數 821 閱讀 8256

一、啟動執行緒

void

do_something();

std::thread t(do_something);

join(),detach()

二、執行緒傳參

執行緒呼叫傳參

void f(int i,std::string const& s);

std::thread t(f,3,"hello");

注意執行緒初始化不會對舛訛的引數隱式轉換,需要顯式轉換。

三、轉移執行緒所有權

std::move()來轉移執行緒所有權,轉移後源執行緒將和執行執行緒沒有關聯。

void

some_function();

void

some_other_function();

std::thread t1(some_function); //1

std::thread t2=std::move(t1); //

2t1=std::thread(some_other_function); //

3std::thread t3; //

4t3=std::move(t2); //

5t1=std::move(t3); //

6 賦值操作將使程式崩潰,t1已經有乙個執行緒了。

四、執行時決定執行緒數量

std::thread::hardware_concurrency()這個函式將返回能同時併發在乙個程式中的執行緒數量。例如,多核系統中,返回值可以是cpu核芯的數量。因為上下文頻繁的切換會降低執行緒的效能,所以肯定不想啟動的執行緒數多於硬體支援的執行緒數量。

JVM併發程式設計專題 多執行緒管理(執行緒池)

核心執行緒 執行緒在初始化期間建立出來,這樣使用完了扔給下乙個可以重用 開銷少,但會占用記憶體 臨時執行緒 執行緒用完了就扔掉,每次請求都會新建乙個執行緒 開銷大,但是節約記憶體 執行緒池分類 週期 臨時 定長 執行緒池核心 佇列 wokder裝飾器 物件池思想 池屬性裝飾器 引用 清洗 執行緒池應...

併發程式設計 9 執行緒池 高階執行緒管理

所以從管理執行緒和任務的機制,兩個角度介紹執行緒池。一 簡單的執行緒池 定義 管理乙個任務佇列,乙個執行緒佇列,然後每次取乙個任務分配給乙個執行緒去做,迴圈往復。作為最簡單的執行緒池,其擁有固定數量的工作執行緒 通常工作執行緒數量std thread hardware concurrency 相同 ...

併發程式設計(2)

作用 private volatile int a 0 強制執行緒到共享記憶體中讀取資料,而不是從執行緒工作中讀取,從而使變數在多個執行緒間可見。volatile無法保證原子性,volatile是輕量級的同步,效能比synchronized強很多,但是只是保證了效能的可見性,並不能替代synchro...