首页 > 系统相关 >进程和线程基础内容

进程和线程基础内容

时间:2024-09-19 15:03:21浏览次数:1  
标签:并行 内容 切换 进程 线程 多线程 CPU

  1. 什么是进程和线程?
    进程是指运行中的程序,在windows里可以在任务管理器中查看;线程是CPU调度的基本单位,进程可以看成程序执行的一个实例。一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。进程就是线程的容器,需要线程利用进程中的一些资源,处理一个代码、指令。最终实现进程所预期的结果。
  2. 进程和线程的区别?
    1> 进程是操作系统分配的资源,而线程是CPU调度的基本单位
    2> 资源方面:同一个进程下的线程共享进程中的一些资源。线程同时拥有自身的独立存储空间,进程之间的资源通常是独立的。
    3> 数量不同:进程一般指的就是一个进程。线程是依附于某个进程的,而且一个进程中至少会有一个或多个线程
    4> 开销不同:线程和创建和终止的时间是比较短的。而且线程之前的切换比进程之间的切换速度快的多。进程之前的通讯很麻烦,一般要借助内核才可以实现,而线程之前的通讯很方便。
  3. 什么是多线程?
    多线程是指单个进程中同时运行多个线程。多线程的目的是为了提供CPU的利用率。
    可以通过避免一些网络IO或者磁盘IO等需要等待的操作,让CPU去调度其他线程。可以大幅度的提升程序的效率,提供用户体验。
  4. 多线程的局限
    线程不是越多越好的,如果线程数量特点多,CPU在切换线程上下文时,会额外造成很大的消耗
    任务的拆分依赖业务场景,有些业务很难拆分,不是多线程处理更好
    虽然多线程带来了一定的性能提升,如果再做一些操作时,多线程如果操作临界资源,可能会发生一些数据不一致的安全问题,甚至涉及到锁操作时,会造成死锁问题。
  5. 串行、并行、并发
    串行是一个一个处理;并行是同时处理;多线程的并发:CPU在极短的时间内,反复切换执行不同的线程,看似好像是并行,但是只是CPU高速的切换。并行就是多核CPU同时调度多个线程,是真正的多个线程同时执行。单核CPU无法实现并行效果,单核CPU是并发。
  6. 同步异步、阻塞非阻塞
    同步与异步:执行某个功能后,被调用者是否会主动反馈信息
    阻塞和非阻塞:执行某个功能后,调用者是否需要一直等待结果的反馈。
    两个概念看似相似,但是侧重点是完全不一样的。

标签:并行,内容,切换,进程,线程,多线程,CPU
From: https://www.cnblogs.com/chengdanally/p/18420578

相关文章

  • 操作系统:线程间通信方式(上):锁机制详解
    操作系统:线程间通信方式(上):锁机制详解在多线程编程中,多个线程共享资源是常见的需求,但资源竞争会导致数据不一致和冲突问题。锁机制是一种用于控制线程对共享资源访问的同步方式,确保同一时刻只有一个线程能够访问临界区(CriticalSection)。本文将详细介绍线程间通信中的锁机......
  • [TamperMonkey] 批量替换页面内容
    //==UserScript==//@nameReplacewords//@namespacehttp://tampermonkey.net///@version2024-09-18//@description替换网页中的指定关键字//@authorYou//@match*://ctext.org/*//@iconnone//@grantnone//......
  • 优化下载性能:使用Python多线程与异步并发提升下载效率
    文章目录......
  • 线程池的执行流程、状态及类型
    线程池的理解        线程池是用于管理和复用线程的一种技术,可以优化线程的执行效率。因为,频繁创建和销毁线程,会带来额外的系统开销,而线程池可以通过创建并重用一组线程来执行任务,可以显著减少这种开销,提高程序的性能和响应能力。         线程池内部维护......
  • 线程池的执行流程是什么?(核心参数、执行流程、拒绝策略)
    一、线程池的执行流程1.首先,向线程池提交一个线程任务,线程池会分配空闲线程去处理该线程任务。2.如果没有空闲线程就判断当前存活线程数是否超过核心线程数:    (1)没有超过就创建一个核心线程,处理线程任务。        (2)超过核心线程数就将存活线程存放在工......
  • springboot中如何使用线程池
    springboot中如何使用线程池在SpringBoot中使用线程池,你可以定义一个ThreadPoolTaskExecutor的Bean,然后在需要的地方使用@Autowired注入这个Bean。以下是一个配置线程池的例子:importorg.springframework.context.annotation.Bean;importorg.springframew......
  • 待学习内容记录
    pdb:python内置模块,最近将程序部署到linuxserver运行后,出现问题不知道如何调试,用这个模块应该有办法。pytest:最近看dify源码,增加一个供应商后编写的测试用例,代码基本看不懂,需要好好学习一下此模块。docker:最近想本地部署dify,用源码调试,于是接触了一下docker。但需要花时间......
  • 操作系统之进程
    概念进程是程序的一次执行过程,是动态的。程序则是存放在磁盘上的可执行文件,属于静态。进程是程序的实体运行过程,是系统进行资源分配和调度的独立单位。组成进程控制块(PCB):PID:进程标识符,用于唯一标识一个进程。UID:用户标识符,标识创建该进程的用户。进程控制和管理信息:用于......
  • 《深入理解 Java 线程池:高效管理线程的利器》
    线程池1.什么是线程池?​线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。2.线程池常用类和接口​在Java标......
  • Java多线程-(线程的创建,线程安全,线程状态)
    第一章.创建线程的方式1.第一种方式_extendsThread1.定义一个自定义线程类继承Thread2.重写run方法(run方法是用于设置线程任务的)3.创建自定义线程类对象4.调用Thread类中的start方法(start方法:开启线程,jvm自动执行run方法)publicclassMyThreadextendsThread{......