整理自c++併發程式設計實戰
使用std::shared_ptr<>的執行緒安全佇列
/*
* threadsafe_queue_ptr.cpp
* * created on: mar 2, 2018
* author: [email protected]
* 為了防止在wait_and_pop()中引發異常,
* 所以將shared_ptr<>的初始化移動到push()
* 呼叫,並且儲存shared_ptr<>的例項而不是
* 儲存值。將內部的queue複製到shared_ptr<>
* 並不會引發異常。
*/#include #include #include #include #include using namespace std;
templateclass threadsafe_queue
void wait_and_pop(t& value)
shared_ptrtry_pop()
void push(t new_value)
bool empty() const
private:
//互斥鎖變數
mutable mutex _mut;
//使用智慧型指標儲存的佇列型別
queue> _data_queue;
//條件變數
condition_variable _data_cond;
};int main()
{ threadsafe_queuemy_queue;
my_queue.push(1);
my_queue.push(2);
my_queue.push(3);
my_queue.push(4);
my_queue.push(5);
my_queue.push(6);
my_queue.push(7);
int a = 1;
my_queue.try_pop(a);
shared_ptri = my_queue.try_pop();
cout<<"try_pop pop出的數是:"<<*i《執行結果:
clh01s@clh01s:~/testcode/併發$ g++ threadsafe_queue_ptr.cpp -pthread -std=c++11
clh01s@clh01s:~/testcode/併發$ ./a.out
加鎖_mut
pop:1
try_pop pop出的數是:2
等待pop
開始pop
wait_and_pop pop出的數是:3
c 11多執行緒程式設計 執行緒安全佇列
c11正式引入了自己的執行緒類,讓c 的多執行緒程式設計變的更加優雅。由於不同的編譯器對新特性的支援有所差異,這裡的 都是在gcc 4.8版本下編譯執行。涉及到的c 11的知識如下 thread 執行緒庫同步和互斥有關量 mutex和condition variable簡單的資源管理類 lock g...
C 智慧型指標使用
由於 c 語言沒有自動記憶體 機制,程式設計師每次 new 出來的記憶體都要手動 delete。程式設計師忘記 delete,流程太複雜,最終導致沒有 delete,異常導致程式過早退出,沒有執行 delete 的情況並不罕見。std auto ptr boost scoped ptr boost ...
C 智慧型指標的使用
測試環境 win7,vs2012 如果未安裝boost,請參考 涉及智慧型指標 shared ptr,weak ptr,scoped ptr,auto ptr 其它 enable shared from this 總呼叫函式 testsmartpointer 可以將其放在main 中執行。解釋在 中...