原创 1.4. C++併發(線程之間共享數據)

多線程之間共享數據經常會產生競爭條件,當競爭條件破壞不變量時會導致問題的產生。比如多個線程對同一數據的修改可能會導致未定義行爲,多線程中某一行爲需要獲取多個鎖時可能會造成死鎖。解決競爭條件產生的問題的解決方案通常有兩個,一個是修改

原创 C++併發(條件變量)

C++標準庫對條件變量有兩套實現:std::condition_variable和std::condition_variable_any,其中std::condition_variable_any的通用性更強,但是佔用系統資源更多

原创 1.3. C++併發(轉移線程所有權,簡單控制線程數量)

std::thread實例是可以轉移的,但是不能複製,因此轉移線程的所有權也是很重要的內容點。 案列1:轉移線程所有權並且使用類進行線程管理(RAII) 該實例類比前面1.2中提到的thread_guard類不同之處在於管理類不是

原创 1-1. C++併發(創建線程)

創建線程 案例1:如何創建線程 #include <thread> void do_some_work(); std::thread my_thread1(do_some_work);//函數對象會複製到新線程的存儲空間中,函數對

原创 1-2. C++併發(線程傳參)

如何向線程內傳遞參數 案例1:想線程中傳遞參數 #include <thread> void f(int i, std::string const& s); std::thread t(f, 3, "hello"); 案例2:線

原创 C++併發(利用線程分割任務)

example: 利用線程來分割任務 #include <iostream> #include <thread> #include<vector> #include <algorithm> #include <numeric>

原创 0. C++併發(併發的兩種方式)

兩種併發方式: 進程和線程的區別 a、進程是資源分配的最小單位,線程是程序執行的最小單位(資源調度的最小單位) b、進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,這種

原创 C++併發(期望)

在C++標準庫中,有兩種“期望”,使用兩種類型模板實現,聲明在頭文件中:唯一期望(unique futures)(std::future<>)和共享期望(shared futures)(std::shared_future<>)

原创 c++ 多線程學習-thread庫(3.1)單線程等待一個事件或者某個條件

當一個線程等待另一個線程完成任務時,有幾種選擇。 第一種,線程持續性的檢查共享數據標誌。但是這樣會造成性能的浪費,而且重複性的訪問勢必會對數據進行長時間的上鎖,從而造成其他線程無法訪問,這樣線程就會持續等待。 第二種,比第一種

原创 1.5. C++併發 (初始化保護,只需要保護一次)

在初始化時保護共享數據 案例1. std::call_once使用,該案例中發送信息和接受信息都需要打開連接,但是這兩個地方只需要調用一次打開連接即可。 class X { private: connection_info co

原创 併發的兩種方式

兩種併發方式: 進程和線程的區別 a、進程是資源分配的最小單位,線程是程序執行的最小單位(資源調度的最小單位) b、進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,這種

原创 C++併發(創建線程)

創建線程 案例1:如何創建線程 #include <thread> void do_some_work(); std::thread my_thread1(do_some_work);//函數對象會複製到新線程的存儲空間中,函數對

原创 C++併發(線程傳參)

如何向線程內傳遞參數 案例1: #include <thread> void f(int i, std::string const& s); std::thread t(f, 3, "hello"); 案例2:線程拷貝參數變量或

原创 python 字典詳解(真的超級詳細)

字典在python中的地位想必不用作者多說了,下面直接進入正題。 Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win32

原创 Python大殺器--迭代器、生成器

要判斷一個Pythonista編寫的代碼夠不夠pythonic,一個很重要的標準就是看他能不能靈活運用迭代器。 首先要介紹一下什麼是迭代器:在python中有兩種循環語句,while和for。通常我們可以以c風格來使用它們,但是p