c++11並行、並發與多線程編程


  首先,我們先理解並發和並行的區別。 

你吃飯吃到一半,電話來了,你一直到吃完了以后才去接,這就說明你不支持並發也不支持並行。

你吃飯吃到一半,電話來了,你停了下來接了電話,接完后繼續吃飯,這說明你支持並發。
你吃飯吃到一半,電話來了,你一邊打電話一邊吃飯,這說明你支持並行。

並發的關鍵是你有處理多個任務的能力,不一定要同時。
並行的關鍵是你有同時處理多個任務的能力。

所以我認為它們最關鍵的點就是:是否是『同時』。

  如上所示,並發可以理解為在同一時間段內發生,而並行是指兩個事件的發生是處於平行狀態的,即同時發生的。

  我們知道JavaScript是不支持多線程的,而python、php、java等是支持多線程的,同樣,c++也是支持多線程編程的。

  在c++11中,有下面的頭文件是用來支持多線程編程的:

  • <atomic>: 該頭文件聲明了兩個類,即std::atomic以及st::atomic_flag。
  • <thread>:  該頭文件主要聲明了std::thread類。
  • <mutex>: 中文是互斥量的意思。該頭文件中主要聲明了與互斥量(mutex)相關的類,比如std::lock_gruad以及std::unique_lock等,以及其他的類型和函數。
  • <condition_variable>: 該頭文件聲明了與條件變量相關的類,包括std::condition_variable以及std::condition_variable_any。
  • <future>: 該頭文件主要聲明了std::promise,std::package_task兩個Provider類以及std::future和std::shared_future類,另外還有一些與之相關的類型和函數,std::async()函數就聲明在這個頭文件中。

  

 

 

 

 

 

 

 

 

 

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM