17.1 C++并发与多线程-基础概念与实现

17.1 C++并发与多线程-基础概念与实现
17.2 C++并发与多线程-线程启动、结束与创建线程写法
17.3 C++并发与多线程-线程传参详解、detach坑与成员函数作为线程函数
17.4 C++并发与多线程-创建多个线程、数据共享问题分析与案例代码
17.5 C++并发与多线程-互斥量的概念、用法、死锁演示与解决详解
17.6 C++并发与多线程-unique_lock详解
17.7 C++并发与多线程-单例设计模式共享数据分析、解决与call_once
17.8 C++并发与多线程-condition_variable、wait、notify_one与notify_all
17.9 C++并发与多线程-async、future、packaged_task与promise
17.10 C++并发与多线程-future其他成员函数、shared_future与atomic
17.11 C++并发与多线程-Windows临界区与其他各种mutex互斥量
17.12 C++并发与多线程-补充知识、线程池浅谈、数量谈与总结

1.基础概念与实现

  1.1 并发、进程、线程的基本概念和综述

(1)并发

    并发表示两个或者更多任务(独立的活动)同时发生(进行)。例如,一面唱歌一面弹琴,一面走路一面说话,画画的时候听小说等。回归到计算机领域,所谓并发,就是一个程序同时执行多个独立的任务。
    可以看到,使用并发的原因主要就是能够让多件事情同时做,从而提高整体做事情的效率,也就是提高整体的运行性能。

(2)可执行程序

    可执行程序就是磁盘上的一个文件(也叫程序),如在Windows操作系统下,一个扩展名为.exe的程序一般就是一个可执行程序。而在Linux操作系统下,有可执行权限的文件如权限是-rwxrw-r–,这里的x表示的就是可执行权限,有这种权限的文件一般就是可执行程序。

(3)进程

    进程就是运行起来了的可执行程序。

(4)线程

    所以要把线程理解成一条代码的执行通路。
对线程做一个总结:
  · 线程是用来执行代码的。
  · 把线程理解成一条代码的执行通路(道路),一个新线程代表一条新的通路。
  · 一个进程自动包含一个主线程,主线程随着进程默默启动并运行,并可以包含多个其他线程(非主线程,需要用代码来创建其他线程),但创建线程的数量最大一般都不建议超过200~300个,至于到底多少个合适,在实际项目中要不断调整和优化,有时候线程多了效率还会降低。
  · 因为主线程是自动启动的,所以一个进程中最少也是有一个线程(主线程)的。所以读者可能会感觉,进程与线程有点像父亲和孩子的关系。
  · 多线程程序可以同时做多件事,所以运行效率更高。但到底有多高,并不是一个很容易评估和量化的事情,仍旧需要在实际编程与实际项目中体会和调整。

(5)学习心得

    很多人对于多线程开发觉得复杂、难用、不好控制。其实,多线程是一种非常强大的工具,能把多线程程序写好,写高效和稳定,不但是作为一个高级开发人员实力的体现,也是很多实际的项目必须采用的一种开发方式,因为只有这样,程序的运行效率才能满足实际生产环境的需要。

  1.2 并发的实现方法

    怎样实现并发呢?以下两种实现手段都可以:
  · 通过多个进程来实现并发,每个进程做一件事。这里所说的进程,指的是这种只包含一个主线程的进程,这种手段并不需要在程序代码中书写任何与线程有关的代码。
  · 在单独的一个进程中创建多个线程来实现并发,这种情况下就得书写代码来创建除主线程外的其他线程了(主线程不需要创建,进程一启动,主线程自动就存在并开始运行了)。

(1)多进程并发

    看一看多进程并发。

(2)多线程并发

    多线程就是在单个的进程中创建多个线程。

(3)总结

    和多进程并发比较来讲,多线程并发的优缺点如下。
    优点:线程启动速度更快,更轻量级;系统资源开销更少;执行速度更快。
    缺点:使用起来有一定难度,要小心处理数据的一致性问题。

  1.3 C++11新标准线程库

    从C++11新标准开始,C++语言本身增加了针对多线程的支持。
    在Windows下开发的C++多线程程序代码可以不用修改源代码,直接拿到同样支持C++11新标准的Linux平台的C++编译器上编译(这就是跨平台)。在实际的开发中,如果要求必须实现跨平台开发时,这会大量地减少开发人员的工作量,实在是很好。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值