許多平行計算程式,需要確定待計算資料的編號,或者說,多執行緒間通過編號而耦合。此時,通過利用c++ 11提供的atomic_?type型別,可實現多執行緒安全的計數器,從而,降低多執行緒間的耦合,以便於書寫多執行緒程式。
許多平行計算程式,需要確定待計算資料的編號,或者說,多執行緒間通過編號而耦合。此時,通過利用c++ 11提供的atomic_?type型別,可實現多執行緒安全的計數器,從而,降低多執行緒間的耦合,以便於書寫多執行緒程式。
以計數器實現為例子,演示了多執行緒計數器的實現技術方法,**如下:
//目的: 測試利用c++ 11特性實現計數器的方法注意編譯命令的引數,尤其,-lpthread//作業系統:ubuntu 14.04
//publish_date: 2015-1-31
//注意所使用的編譯命令: g++ -wl,--no-as-needed -std=c++0x counter.cpp -lpthread
#include
#include
#include
#include
using namespace std;
atomic_int counter(0
); int
order[
400];
void
work(
intid) }
intmain(
intargc,
char
* argv)
否則,若無該鏈結引數,則編譯不會出錯,但會發生執行時錯誤:
terminate called after throwing an instance of 『std::system_error』
what(): enable multithreading to use std::thread: operation not permitted
已放棄 (核心已轉儲)
多執行緒安全計數器
在做效能測試時,需要統計執行一段時間內庫使用鎖的次數 獲取時間戳的次數等。在做這些庫範圍內的某個動作的次數統計時,如果庫內是多執行緒且動作在多個執行緒內都出現。可以使用下面的多執行緒安全的計數器 counter.h ifndef counter h define counter h include ...
C 11 多執行緒
新特性之描述 雖然 c 11 會在語言的定義上提供乙個記憶體模型以支援執行緒,但執行緒的使用主要將以 c 11 標準庫的方式呈現。c 11 標準庫會提供型別 thread std thread 若要執行乙個執行緒,可以建立乙個型別 thread 的實體,其初始引數為乙個函式物件,以及該函式物件所需要...
c 11 多執行緒
1.多執行緒的原理 同一時間內,cpu只能處理1條執行緒,只有1條執行緒在工作 執行 多執行緒併發 同時 執行,其實是cpu快速地在多條執行緒之間排程 切換 如果cpu排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象。思考 如果執行緒非常非常多,會發生什麼情況?cpu會在n多執行緒之間排程,c...