c++并发编程实战读书笔记——第1章 c++的并发世界

c++11新特性:对多线程的支持,在标准库中为多线程提供组件,使用c++编写与平台无关的多线程程序成为可能。
**并发:**在单个系统里同时执行多个独立的任务。
**任务切换:**因为任务切换得太快,以至于无法感受到任务的切换。任务切换会给用户和应用程序造成一种“并发的假象”。
并发实现的两种方式:
1 多核机器的真正并行
2 单核机器的任务切换
并发的途径:
1 **多进程并发:**有多个单线程的进程。将应用程序分为多个独立的进程。独立的进程可以通过IPC(信号、套接字、文件、管道)传递讯息。
缺点:因为操作系统会在进程间提供了一定的保护措施,以避免一个进程去修改另一个进程的数据,所以进程间通信设置复杂,速度慢。运行多个进程需要固定的开销:需要时间启动进程、操作系统需要内部资源来管理进程。
优点:
①操作系统在进程间提供附加保护操作和更高级别的通信机制。
②可以使用远程连接的方式,在不同的机器上运行独立的进程。
2 **多线程并发:**在单一进程里有多个线程。线程类似轻量级的进程,每个线程相互独立运行。进程中的所有线程都共享地址空间。使用多线程相关的开销远远小于使用多个进程。共享内存的灵活性是有代价的。线程间数据共享可能会遇到问题。
类比:
方案一:两个程序员在两个独立的办公室一起做软件项目,安静地工作,互不干扰,人手一套参考手册。但是沟通起来有些困难,比起直接交谈,必须使用电话、电子邮件、或者到对方办公室进行交流,并且管理两个办公室需要有一定的经费支出,还需要购买多份参考手册。
方案二:让开发人员在同一间办公室办公,可以自由地讨论,只需管理一个办公室,只要有一套参考资料就够了。但是开发人员可能难以集中注意力,还可能存在资源共享的问题(比如参考手册去哪儿了)
c++标准并未对进程间通信提供任何原生支持,所以使用多进程的方式实现并发,会依赖与平台相关的API。
为什么使用并发?
1 分离关注点:分离相关的代码和无关的代码,使程序更容易理解和测试,从而减少出错的可能性。
2 为了性能
c++11新标准支持:用于管理线程、保护共享数据、线程间同步操作、低级原子操作的各种类
c++多线程程序和普通程序的区别是:某些函数可以并发运行,需要确保共享数据在并发访问时是安全的。为了并发地运行函数,必须使用特定的函数以及对象来管理各个线程。

c++标准库中对多线程的支持的声明在新的头文件中:管理线程的函数和类thread中声明。

#include <thread>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值