利用 C 11 特性實現多執行緒計數器

2021-07-02 01:15:17 字數 1035 閱讀 6537

許多平行計算程式,需要確定待計算資料的編號,或者說,多執行緒間通過編號而耦合。此時,通過利用c++ 11提供的atomic_?type型別,可實現多執行緒安全的計數器,從而,降低多執行緒間的耦合,以便於書寫多執行緒程式。

許多平行計算程式,需要確定待計算資料的編號,或者說,多執行緒間通過編號而耦合。此時,通過利用c++ 11提供的atomic_?type型別,可實現多執行緒安全的計數器,從而,降低多執行緒間的耦合,以便於書寫多執行緒程式。

以計數器實現為例子,演示了多執行緒計數器的實現技術方法,**如下:

//目的: 測試利用c++ 11特性實現計數器的方法

//作業系統: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) 

注意編譯命令的引數,尤其,-lpthread

否則,若無該鏈結引數,則編譯不會出錯,但會發生執行時錯誤:

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...