多執行緒是c++中常用的一種技術,可以充分利用多核cpu的計算潛能.以下以相關概念介紹多執行緒的使用.
執行緒(thread)與程序(process)均為音譯詞,程序本質上就是廣義上理解的程式,而程序則是乙個程式內部的一種平行計算方法.最常見的,在ros中,node與node之間的關係,就是程序.而在乙個node中,訂閱兩個訊息去處理,則是兩個執行緒.
多執行緒的實現一般有三種方式:函式指標,functor,lambda表示式
void accumulator_function2(const std::vector&v, unsigned long long &acm,
unsigned int beginindex, unsigned int endindex)
}
那實現多執行緒的方式如下:
//pointer to function
大體思想是,將乙個陣列一分為二,使用兩個執行緒去計算。執行緒t1和t2中傳進去的acm1、acm2,不能是同乙個數,如果是同乙個,就會發生兩個執行緒同時修改乙個變數的錯誤。
幾個基本語法:std::thread表示新建乙個執行緒;join表示執行該執行緒
class caccumulatorfunctor3
}unsigned long long _acm;
};//creating thread using functor
});std::thread t2([&acm2, &v]
});t1.join();
t2.join();
std::cout << "acm1: " << acm1 << endl;
std::cout << "acm2: " << acm2 << endl;
std::cout << "acm1 + acm2: " << acm1 + acm2 << endl;
}
這種適合處理流程比較簡單的多執行緒任務。 多執行緒 執行緒簡介
1.什麼是執行緒?什麼是程序?執行緒 thread 執行緒是作業系統所能執行排程的最小單位。他被包含在程序之中,是程序的實際運作單位,也就是程式執行流的最小單位。乙個標準的執行緒由 執行緒id pc 當前指令指標 暫存器集合 堆疊組成。也被稱為輕量級的程序。乙個執行緒可以建立和撤銷另乙個執行緒,同乙...
多執行緒簡介
多執行緒指在單個程式中可以同時執行多個不同的執行緒執行不同的任務。多執行緒程式設計的目的,就是 最大限度地利用 cpu資源 當某一線程的處理不需要占用 cpu而只和 io等資源打交道時,讓需要占用 cpu的其他執行緒有機會獲得 cpu資源。從根本上說,這就是多執行緒程式設計的最終目的。乙個程式實現多...
多執行緒簡介
什麼是執行緒?執行緒是乙個過程,一次可以做的任務的過程。多執行緒就是一次可以做幾個任務的過程。打個比方 乙個房間正在被乙個工人刷牆,這就是單執行緒。這時,另乙個工人進入了房間,那麼就變成了兩個人在刷牆,這就是多執行緒。在計算機中指令的執行由cpu排程,因為電腦只有一塊cpu,所以本質上是乙個執行緒的...