C++11并发与多线程笔记(1)并发、进程、线程基本概念

简介

本系列文章主要为学习多线程基础编程期间的笔记, 主要学习"C++11并发与多线程"视频课程(B站),  并查看各种资料作为补充.

并发、进程、线程

  1. 并行和并发:
    • 并发(concurrency):实际上一个时刻只能处理一个任务,任务调度、上下文快速切换,使得看上去多个进程同时都在运行的现象
    •  wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
    • 并行(parallel):多个CPU,每个cpu可以处理一个任务,在某一时刻,多个任务同时被执行
    • 并行与否程序员无法控制,只能让操作系统决定。
    • 当程序中写下多进程或多线程代码时,这意味着的是并发而不是并行
  2. 可执行程序:
    1. windows 扩展名为exe
    2. linux:ls -la, rwxrwxrwx(x执行权限)——通过“./文件名”
  3. 进程
    1. 一个可执行程序运行起来,就叫创建了一个进程
    2. 一个程序执行在不同的数据集上就成为不同的进程
    3. 进程 = PCB + 程序 + 数据集合

 [任务管理器图1-进程]

如图所示,每一个都是一个进程,同一个exe文件可以打开为多个进程

[任务管理器图2-当前系统进程和线程]

进程状态模型,可以忽略挂起(suspend)就是经典的五状态模型。

4.线程

  1. 每个进程有且只有一个主线程,可以写代码走其他线程(建议不要超过200-300个);
  2. 启动程序产生进程之后,这个主线程就自动启动起来了
  3. ctrl+f5运行程序时,实际上是进程的主线程来调用main()的代码,可以理解为代码执行的一条道路;自己写的其他线程,可以走不同的地方;
  4. 线程之间的切换有很多中间状态,切换会耗费本该属于程序运行的时间;
  5. 多线程并不是说线程越多效率越高,要在实践之中进行调整;
  6. 网络通讯、网络服务器、网络方向,多线程是必备基础。

二、并发实现的方法

  1. 实现并发的手段
    1. 通过多个进程
    2. 单个进程中,多个线程
  2. 多进程并发:
    1. 服务器进程之间的通信
    2. 进程之间通信(同一个电脑上:管道、文件、消息队列、共享内存;不同电脑上:socket通信);
  3. 多线程并发:
    1. 一个进程中的所有线程有线程共享地址空间(共享内存)
    2. 全局变量、指针、隐痛都可以在线程之间传递,所以使用多线程开销远远小于多进程
    3. 出现相应问题:数据一致性
  4. 优先考虑多线程而不是多进程;

三、C++11新标准线程库

  1. 之前需要用windows.h的create thread ...... / linux pthread_creat() ...... 来实现
  2. C++语言本省增加对多线程的支持,意味着可移植性(跨平台)

参考文档

我已经理解了并发和并行的区别 - 骏马金龙 - 博客园

并发和并行的区别 - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值