c/cpp - 多线程/进程 基础

本文介绍了程序、任务、多任务、进程和线程的基本概念。进程是执行中的应用程序,而线程是进程中执行的具体任务。多任务可以基于进程或线程,早期的多进程模型存在资源分配开销大和通信困难的问题,因此引入了线程来提高效率。同步和异步描述了任务执行的顺序,而阻塞和非阻塞关注于数据访问方式。文章还探讨了并发、并行执行以及系统资源的管理。
摘要由CSDN通过智能技术生成

1. 概念

1.1 程序

代码、指令,静态的

1.2 任务

具体要做的实景,可以是基于进程、或基于线程

1.3 多任务

例如:当执行的程序执行I/O操作时,操作系统会将CPU资源分配给其他等待执行的程序

两种类型的多任务
基于进程:基于进程的多任务处理,是程序的并发执行
基于线程:基于线程的多任务处理,是同一程序的片段的并发执行

1.4 进程

进程正在执行的应用程序,多任务操作系统可以控制各个进程的执行状态,如:终止某个正在执行的进程,启动某个暂停执行的进程
是动态的,程序的实例化
操作系统负责为每个进程分配独立的内存和其他资源(I/o设备,文件等)
进程执行完毕后,操作系统会将进程占用的资源全部回收

补充-早期多进程

早期的做任务操作系统,是以进程为单位管理各个程序的运行以及计算机的分配和回收
缺点:

  1. 操作系统将CPU资源从一个进程分配给另一个进程时,开销较大
  2. 各个进程占用的内存空间相互独立,进程间通信难度大
  3. 一个进程可能会执行多个任务(子任务),当某个任务因I/O操作暂停执行时,其他任务将无法执行(在无多线程的情况下)

1.5 线程

为解决早起多进程缺点,引入线程

线程执行应用程序中的某个具体任务(进程:正在执行的应用程序)(具体任务:一段程序等)
一个进程可以有多个线程,线程之间共享进程的资源

1.5 线程/进程

进程之间独立
进程内为多个线程提供资源
进程内多个线程共享资源
进程内每个线程不同的具体任务
进程内各个线程可以拥有自己的独立私有资源

每个进程执行前,操作系统会为其分配所需的资源:程序代码、数据、内存空间、文件资源等
一个进程必须包含至少一个线程(主线程)

/*
公司(程序1):一个多进程的程序
	进程1(工厂1)
	    - 线程1(工人1)
	    - 线程2(工人2)
	进程2(工厂2)
	    - 线程3(工人3)
	    - 线程4(工人4)
*/

应用程序/系统资源

操作系统支持同时执行多个应用程序,为避免多个应用程序访问系统资源(文件资源、I/O设备、网络等)时产生冲突,操作系统会将可能产生冲突的系统资源保护起来,阻止应用程序直接访问
应用程序需要访问系统资源时,需要调用系统API

并发/并行/同步/异步

  • 并发

计算机能够同时执行多项任务;
并发的形式有许多不同:

单核处理器:时间分片的形式,一个任务执行一段时间,也就是任务交替进行。也被称为进程或者线程的上下文切换
多核处理器:在多个核心上,真正并行的执行任务,也就是以并行的形式实现并发

  • 并行

多核心并行执行任务
在这里插入图片描述

  • 同步

同步:必须等到前一个任务执行完毕之后,才能执行下一个任务
在同步中,没有并发和并行的概念

在这里插入图片描述

  • 异步

不同任务之间,并不会相互等待,先后执行(即在执行任务A的时候,也可以同时执行任务B)
也就多线程编程
在这里插入图片描述

补充

多线程编程:多核心并发,适用于计算密集型应用程序
单线程异步编程:强制单核心并发,适用于I/O操作密集型应用程序

同步/异步/阻塞/非阻塞

阻塞/非阻塞:针对的是接收方(函数应对返回的方式)(阻塞:没有得到结果不返回;非阻塞:函数立即返回,循环查询)
同步/异步:针对的是发送方(函数调用的方式)(同步:没有结束就死等;异步;功能结果未知,结束后通知我)

(自我理解:同步的表现形式是阻塞,异步的表现形式是非阻塞)

进一步理解:
同步/异步:表示的读写(访问)数据的方式
阻塞/非阻塞:线程/进程 在等待 读写(访问)数据的状态
(我的理解:一般就是 同步阻塞 或 异步非阻塞)
(请求端(同步/异步);接收端的请求线程+接收端的处理线程(阻塞非阻塞))

并发/并行 和 同步/异步之间 并没有一个明确的关系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值