C++多线程编程个人笔记

C++多线程编程

  1. 进程、线程的基本概念

进程是具有独立功能的程序在某个数据集合上的一次执行过程。进程是系统进行资源分配和调度的一个独立单位。
线程,又称为轻量级的进程,是CPU使用的基本单元,是进程内的一个执行实体或执行单元,是被系统独立调度和分配的基本单元。由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。线程有,新建,就绪,运行,阻塞状态。
在现代操作系统中,资源申请的基本单位是进程,进程由程序段、数据段和PCB(进程控制块)组成。

2.进程状态与转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.进程和线程的区别
在这里插入图片描述
4.C++多线程的几种实现方式

  • 使用windows API
    (https://www.cnblogs.com/codingmengmeng/p/5913068.html)

  • std::thread(https://segmentfault.com/a/1190000006614695)

  • boost.asio(线程池,可以暂时不了解)

5.多线程同步和互斥的实现方式
线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。
用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。
在这里插入图片描述

6.多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)。
在这里插入图片描述
7.临界区和互斥量
https://blog.csdn.net/anddy926/article/details/7828173在这里插入图片描述

在这里插入图片描述
8.生产者消费者问题
9.读者写者问题
10.C++锁(https://blog.csdn.net/xy_cpp/article/details/81910513)
11.在这里插入图片描述
12.进程通信的方式
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值