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

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

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

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

一、 并发、进程、线程
  1. 并行和并发:

  2. 并发(concurrency):实际上一个时刻只能处理一个任务,任务调度、上下文快速切换,使得看上去多个进程同时都在运行的现象
  3.  
  4. 并行(parallel):多个CPU,每个cpu可以处理一个任务,在某一时刻,多个任务同时被执行
  5. 并行与否程序员无法控制,只能让 *** 作系统决定。
  6. 当程序中写下多进程或多线程代码时,这意味着的是并发而不是并行
  7. 可执行程序:
    1. windows 扩展名为exe
    2. linux:ls -la, rwxrwxrwx(x执行权限)——通过“./文件名”
  8. 进程
    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++语言本省增加对多线程的支持,意味着可移植性(跨平台)
参考文档

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

并发和并行的区别 - 简书

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存