码迷,mamicode.com
首页 > 编程语言 > 详细

c++11并行、并发与多线程编程

时间:2018-05-29 20:45:39      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:bsp   理解   pac   std   php   VID   thread   asc   var   

  首先,我们先理解并发和并行的区别。 

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。

你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。

所以我认为它们最关键的点就是:是否是『同时』。

  如上所示,并发可以理解为在同一时间段内发生,而并行是指两个事件的发生是处于平行状态的,即同时发生的。

  我们知道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()函数就声明在这个头文件中。

  

 

 

 

 

 

 

 

 

 

 

 

 

 

  

c++11并行、并发与多线程编程

标签:bsp   理解   pac   std   php   VID   thread   asc   var   

原文地址:https://www.cnblogs.com/zhuzhenwei918/p/9107555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!