程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++並行編程1

C++並行編程1

編輯:C++入門知識

C++並行編程1


    我們可以一邊看電視,一邊唱歌。人並行非常容易理解,但是計算機呢?是不是我們一邊編輯著word文檔,一邊聽著歌,這樣計算機就是在並行嗎?不一定歐,如果你計算機是單核,就一定不是並行了,而是把你的任務分成你根本感覺不到的任務片,近似在並行執行,其實是在串行執行。如果是雙核,也不一定,有可能一個核上同時執行兩個任務,也有可能是並行歐,不同核執行不同的任務。   並行執行有兩種實現方法: 多進程:啟動比較復雜並且比較慢,操作系統需要額外的資源來管理進程,但是容易寫比線程安全的代碼。   多線程:線程之間更容易通信,啟動和通信也比進程開銷小。   why use concurrency   拆分任務 合理利用性能 通常有三種並行的方法:   task parallelism   把一個任務拆分成不同部分,並行執行   data parallelism   把數據分成不同部分,線程在不同數據上執行相同操作。   embarrassingly parallel   算法變為並行執行算法   why not use concurrency   執行任務容易完成,但是線程啟動也需要開銷 啟動線程太多,容易消耗完內存和地址空間(特別是32位機器),容易消耗完系統資源,比如每個鏈接建立一個線程,還有切換開銷。 hello world   需要在C++11環境下編譯。   #include <iostream>   #include <thread>     void hello()   {       std::cout<<"hello world"<<std::endl;   }     int main()   {      std::thread t(hello);      t.join();      return 0;   }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved