原创 6-6 unique_lock詳解

class A { public: std::unique_lock<std::mutex> rtn_unique_lock() { std::unique_lock<std::mutex> tmpguard(my_mut

原创 6-5 互斥量概念、用法、死鎖演示及解決詳解

一:互斥量(mutex)的基本概念 保護共享數據,操作時,某個線程用代碼把共享數據鎖住、操作數據、解鎖,其他想操作共享數據的線程必須等待解鎖,鎖定住,操作,解鎖。 互斥量是個類對象。理解成一把鎖,多個線程嘗試用lock()成員函數

原创 5-3 shared_ptr常用操作、計數、自定義刪除器等等

003share_ptr的引用和減少與常見操作 #include<iostream> #include<cstdlib> #include<string> #include<vector> #include <memory> u

原创 5-4 weak_ptr概述、weak_ptr常用操作、尺寸

004weak_ptr概述與常見操作 #include<iostream> #include<cstdlib> #include<string> #include<vector> #include <memory> using

原创 6-8 condition_variable、wait

一:條件變量std::condition_variable、wait()、notify_one() 線程A:等待一個條件滿足 線程B:專門往消息隊列中扔消息(數據) std::condition_variable實際上是一個類,是

原创 5-6 unique_ptr概述、常用操作

006unique_ptr概述和常見操作 #include<iostream> #include<cstdlib> #include<string> #include<vector> #include <memory> usin

原创 5-7 返回unique_ptr、刪除器、尺寸、智能指針

007unique_ptr使用方法總結和智能指針概述 #include<iostream> #include<cstdlib> #include<string> #include<vector> #include <memory>

原创 6-11 std atomic續談、std async深入談

一:原子操作std::atomic續談 一般atomic原子操作,針對++,–,+=,&=,|=,^=是支持的。 std::atomic<int> g_mycout = 0;//這是個原子整型類型變量;可以向使用整型變量一樣使用

原创 6-10 future其他成員函數、shared_future、ato

一:std::future的其他成員函數 int mythread() { cout<<"mythread() start"<<"threadid="<<std::this_thread::get_id()<<endl;//新的

原创 6-12 windows臨界區、其他各種mutex互斥量

一:windows臨界區 二:多次進入臨界區試驗 在“同一個線程”(不同線程就會卡住等待)中,windows中的"相同臨界區變量“代表的臨界區的進入(EnterCriticalSection)可以被調用多次 但是你調用了幾次Ent

原创 6-1 併發基本概念及實現,進程、線程基本概念

一、併發、進程、線程的基本概念和綜述 併發,線程,進程的要求必須掌握; 1.1、併發 兩個或更多的任務(獨立的活動)同時發生(進行):一個程序同時執行多個獨立任務; 以往計算機,單核cpu(中英處理器):某一個時刻只能執行一個任務

原创 6-7 單例設計模式共享數據分析、解決,call_once

一:設計模式大概談 “設計模式”:代碼的一些寫法(這些寫法跟常規寫法不怎麼一樣);程序靈活,維護起來可能方便,但是別人接管、閱讀代碼都會很痛苦; 用“設計模式”理念寫出來的代碼很晦澀;《head first》 老外應付特別大的項目

原创 5-2 new、delete探祕,智能指針概述、shared_ptr

001newdelete探祕 #include<iostream> #include<cstdlib> #include<string> #include<vector> using namespace std; class

原创 6-9 async、future、packaged_task、pro

一:std::async、std::future創建後臺任務並返回值 希望線程返回一個結果; std::async是個函數模板,用來啓動一個異步任務,啓動起來一個異步任務之後,他返回一個std::future對象,std::fut

原创 6-2 線程啓動、結束,創建線程多法、join,detach

一、範例演示線程運行的開始和結束 程序運行起來,生成一個進程,該進程所屬的主線程開始自動運行; cout<<“I Love China!” << endl; //實際上這個是主線程在執行,主線程從main()函數返回,則整個進程執