栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

《c++并发教程实战》之第1章 并发世界

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《c++并发教程实战》之第1章 并发世界

《c++并发教程实战》之第1章 并发世界
    • 1.1 并发概念
      • 1.1.1 计算机系统中的并发
      • 1.1.2 并发方式
      • 1.1.3 并发与并行
    • 1.2 使用并发原因
      • 1.2.1 分离关注点
      • 1.2.2 性能提升
      • 1.2.3 何时避免并发
    • 1.4 启程上路

1.1 并发概念

  concurrency,两个或多个同时独立进行的活动。

1.1.1 计算机系统中的并发

  同一个系统中,多个独立活动同时进行,而非依次进行。
  多核处理器真正并行运作多个任务,称为硬件并发(hardware concurrency)。
  任务切换时,必须完成一次上下文切换(context switch),操作系统保存当前任务的CPU状态和指令指针,判断切换到哪个任务,可能需要将新任务的指令和数据从内存加载到缓存。
  硬件支持的线程数(hardware threads),硬件自身真正支持同时运行的独立任务的数量。

1.1.2 并发方式
  1. 多进程并发
      独立进程通过信号、套接字、文件、管道等通信,设置复杂,速度慢,开销大,费时,更安全,可运行在不同计算机上(网络通信)。
  2. 多线程并发
      线程像轻量级进程,独立运行,各自执行不同的命令序列,共用相同的地址空间,直接访问进程的大部分数据。
1.1.3 并发与并行

  都是指使用可调配的硬件资源同时运行多个任务,但并行(parallel)更强调性能(多核同时处理数据)。

1.2 使用并发原因 1.2.1 分离关注点

  隔离不同领域的操作,比如gui与后台数据处理。

1.2.2 性能提升

  单一任务分解成多个部分,各自并行运作,节省总运行耗时,任务并行。
  线程分别对数据的不同部分执行同样操作,数据并行。

1.2.3 何时避免并发

  收益不及代价。
  多线程需要额外开发时间和相关维护成本,线程启动固有开销,线程是一种有限资源(考虑线程池),线程越多,上下文切换越频繁,需根据可用硬件并发资源,调整运行线程数量。

1.4 启程上路
  • 单线程
#include 
using namesapce std;

int main() {
	cout <<"Hello World!" < 
  • 多线程
#include 
#include 
using namesapce std;

void hello() {
	cout <<"Hello World!" <
	thread t(hello);
	t.join();
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号