进程 线程 多线程 并发 同步异步

进程 线程 多线程 并发 同步异步

很多人对进程,线程,多线程,并发,同步,异步等概念感到困惑,这都是大学没好好听课的缘故啊.咱在这里帮感到概念给感到困惑的同学复习下.

程序

程序用来描述计算机所完成的独立功能,并在时间上严格地按前后次序相继地进行计算机操作序列集合,是一个静态概念。

进程

并发执行的程序在执行过程中分配和管理资源的基本单位.是一个动态的执行过程.

进程的静态描述
  1. 进程控制块PCB
  2. 有关程序段
  3. 该程序员对齐进行操作的数据结构集
进程控制块PCB

进程控制块PCB是系统管制进程存在的唯一实体,包含以下东西

  1. 描述信息(进程名或者进程标识号, 用户名或者用户标识号, 家族关系)
  2. 控制信息(进程当前状态, 进程优先级, 程序开始地址, 各种计时信息, 通信信息)
  3. 资源管理信息(占用内存大小及管理用数据结构指针 对换或覆盖用的有关信息 共享程序段大小及起始地址 io设备的相关信息 文件系统的指针以及相关标识)
  4. CPU现场保护结构

并发

所谓并发执行,是为了增强计算机系统的处理能力和提高资源利用率锁采取的一种同时操作技术.

异步

程序中的两部分在执行上没有顺序规定

同步

把异步环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作,互相等待,使得各进程按一定的速度执行的过程称之为进程间的同步

死锁

多个并发进程因竞争资源而引起的一种僵局

线程

线程是进程的一部分,它没有自己的地址空间,它和进程内其他的线程一起共享分配给该进程的所有资源

时间: 2024-10-10 10:11:55

进程 线程 多线程 并发 同步异步的相关文章

python37 1.GIL--全局解释器锁 2.GIL带来的问题 3.为什么需要GIL 4.GIL的加锁解锁时机 5.关于GIL的性能的讨论 6.线程常用方法 7.GIL锁与自定义锁的区别 8.进程池与线程池 9.同步异步 10.异步调用

复习1.JoinableQueue--可以被join的队列2.多线程3线程的使用方法与进程一模一样3.1守护线程3.2线程安全问题3.3解决方案3.3.1互斥锁mutex3.3.2递归锁Rlock3.3.3信号量semaphore3.3.4死锁问题 详解:1.JoinableQueue--可以被join的队列 1.1join是等待任务结束 队列怎么叫结束 调用task_done一次则表示有一个数据被处理完成了,当task_done次数等于put的次数就意味着任务处理完成了 1.2这就是join的

简单的多线程并发同步演示

#include "stdafx.h"#include <iostream>#include <Windows.h>using namespace std;HANDLE hMutex;DWORD WINAPI Fun(LPVOID lp){    while(1){        WaitForSingleObject(hMutex,INFINITE);        cout<<"fun"<<endl;//如果不用信

python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)

9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并发的任务属于IO密集型 进程池: from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor import time,os,random ? def task(x): print('%s 接客' %os.getpid()) time.

python GIL锁、进程池与线程池、同步异步

一.GIL全局解释器锁 全局解释器锁 在CPython中,全局解释器锁(GIL)是一个互斥锁,它可以防止多个本机线程同时执行Python代码.之所以需要这个锁,主要是因为CPython的内存管理不是线程安全的.(然而,自从GIL存在以来,其他特性已经逐渐依赖于它所执行的保证) 什么是GIL 全局解释器锁, 施加在解释器上的互斥锁 为什么需要GIL 由于CPython的内存管理时非线程安全,于是CPython就给解释器加上锁, 解决了安全问题. GIL的加锁与解锁时机 加锁的时机: 在调用解释器时

那些年搞不懂的多线程、同步异步及阻塞和非阻塞(一)---多线程简介

1.进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu.内存) 线程:进程中的一段代码,一个进程中可以有多段代码.本身不拥有资源(共享所在进程的资源): 在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程. 区别: 1.是否占有资源问题 2.创建或撤销一个进程所需要的开销比创建或撤销一个线程所需要的开销大. 3.进程为重量级组件,线程为轻量级组件 多进程: 在操作系统中能同时运行多个任务(程序) 多线程: 在同一应用程序中有多个功能流同时执行 已经有了进程

进程切换 多线程并发

并发:是指两个或更多独立的活动同时发生,在单个系统里同时执行多个独立任务,而非顺序地进行一些活动 老:单个处理器,某一时刻执行一个任务,可以每秒进行多次任务切换 新:多核处理器,真正的并行多核任务,同时也可以进行任务切换 系统从一个任务到另一个任务(即进行切换),要进行一次上下文切换,切换时,操作系统必须为当前运行的任务保存CPU的状态和指令指针,并计算出要切换到哪个任务,并为即将切换到的任务重新加载处理器状态.然后,CPU将新任务的指令和数据的内存载入缓存中. 进程切换:从正在运行的进程中收回

线程Queue、定时器、进程池和线程池、同步异步

目录 线程Queue.定时器.进程池和线程池.多线程socket通信 一.Queue队列实现线程通信 二.线程定时器(Timer) 三.进程池和线程池 四.同步和异步 4.1.同步 4.2 .异步 五.多线程socket升级 线程Queue.定时器.进程池和线程池.多线程socket通信 一.Queue队列实现线程通信 queue模块下提供了几个阻塞队列,这些队列主要用于实现线程通信.在queue模块下主要提供了三个类,分别代表三种队列,它们的主要区别就在于进队列.出队列的不同. 关于这三个队列

进程-线程-多线程

什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又是由多个线程所组成的. 什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针.程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数. 线程和进程的关系? 一个进程会包含多个线程:线程是隶属于某个进程,进程销毁,线程则消失 什么是多线程? 多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程

操作系统介绍-操作系统历史,IO,进程的三态,同步异步阻塞非阻塞

1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操作方式两个特点: (1)用户独占全机.不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低. (2)CPU 等待手工操作.CPU的利用不充分. 批处理-磁带操作: 主机与输入机之间增加一个存储设备--磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入