首页 > 其他分享 >多线程处理

多线程处理

时间:2024-06-16 22:34:17浏览次数:11  
标签:异步 协程 处理 程序 阻塞 任务 操作 多线程

基础知识

阻塞与非阻塞

阻塞状态指程序未得到所需计算资源时被挂起的状态。程序在等待某操作的过程中,自身不被阻塞,可以继续运行干别的事情,则称该程序在该操作上是非阻塞的。

同步与异步

不同程序单元为了完成某个任务,在执行过程中需靠某种通信方式以协调一致。例如在购物系统中更新商品库存时,需要用 “行锁” 作为通信信号,让不同的更新请求强制排队顺序执行,那更新库存的操作是同步的。

为了完成某个任务,有时不同程序单元之间无须通信协调也能完成任务,此时不相关的程序单元之间可以是异步的。例如,爬取下载网页。调度程序调用下载程序后,即可调度其他任务,而无须与该下载任务保持通信以协调行为。不同网页的下载、保存等操作都是无关的,也无须相互通知协调。这些异步操作的完成时刻并不确定。

进程

多进程就是利用 CPU 的多核优势,在同一时间并行执行多个任务,可以大大提高执行效率。

协程

协程本质上是个单进程,它相对于多进程来说,无须线程上下文切换的开销,无须原子操作锁定及同步的开销,编程模型也非常简单。

我们可以使用协程来实现异步操作,比如在网络爬虫场景下,我们发出一个请求之后,需要等待一定时间才能得到响应,但其实在这个等待过程中,程序可以干许多其他事情,等到响应得到之后才切换回来继续处理,这样可以充分利用 CPU 和其他资源,这就是协程的优势。

标签:异步,协程,处理,程序,阻塞,任务,操作,多线程
From: https://www.cnblogs.com/Ho1dF0rward/p/18251406

相关文章

  • 预处理详解
    预处理详解1.预定义符号2.#define定义常量3.#define定义宏4.带有副作⽤的宏参数5.宏替换的规则6.宏函数的对比7.#和##7.1#运算符7.2##运算符8.命名约定9.#undef10.命令⾏定义11.条件编译12.头⽂件的包含12.1头⽂件被包含的⽅式:12.1.1本地⽂件包含12.1.......
  • 面向储存的源码级轻量预处理编程
    以下是对它的定义面向储存的源码级轻量预处理编程是一种在算法竞赛(competitiveprogramming)中常用技巧(skill),它是一种基于预处理的思想而演变出来的编程方法。要采用这种方法,首先可以把整个程序分为两部分:生成器(genernater)结果程序(result)我们通常使用生成器把一......
  • 【JavaEE精炼宝库】多线程(6)线程池
    目录一、线程池的概念及优势1.1线程池的概念:1.2线程池的优势:二、工厂模式三、标准库中的线程池3.1标准库线程池参数解释:3.1.1corePoolSize|maximumPoolSize:3.1.2keepAliveTime|unit:3.1.3workQueue: 3.1.4ThreadFactory: 3.1.5handler:3.2创建线程池演......
  • [转]32th@深入解析C++并发编程:从多线程到现代C++并发库@20240616
    深入解析C++并发编程:从多线程到现代C++并发库你有没有想过,为什么C++在多线程并发编程方面如此强大?C++11标准的发布,为并发编程带来了哪些革命性的变化?本文将深入探讨C++并发编程背后的技术原理,带你领略现代C++并发库的强大之处。文章将结合代码片段,为你揭示C++并发编程的精髓。1.......
  • JAVA多线程实现的三种方式
    1.继承Thread类classExtendThreadextendsThread{//继承自ThreadprivateStringname;publicExtendThread(Stringname){this.name=name;}@Overridepublicvoidrun(){//必须重写run方法,并......
  • (pdf)图解java多线程设计模式.pdf (结城浩)
    书:pan.baidu.com/s/1tGbGhhQ3Ez1SIkqdEREsjQ?pwd=eqp0提取码:eqp0线程基础知识:介绍线程的概念、生命周期、状态转换等基本内容,为后续的多线程设计打下基础。Java线程API:详细讲解Java中线程的创建、启动、控制以及线程间的协作机制,如Thread类、Runnable接口等。线程同步与互斥:......
  • 【Python】数据处理:Matplotlib绘图
    Matplotlib是Python强大的数据可视化工具库,类似于MATLAB语言。Mat-lotlib提供了一整套与MATLAB相似的命令API,十分适合进行交互式制图,而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。Matplotlib是神经生物学家JohnD.Hunter于2007年创建的,其函数设计参考了MATLAB。......
  • (必读)深入浅出Pandas:利用Python进行数据处理与分析 (李庆辉)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoPandas概述:介绍了Pandas库的基本概念、特点和优势,以及它在数据处理和分析领域的重要性。Series对象:讲解了Series对象的创建、访问、修改以及常用的统计和分析方法,如均值、中位数、标准差等。DataFrame对象:详细......
  • (高清pdf集合)图灵程序设计丛书:大规模数据处理入门与实战(套装全10册)【图灵出品!一套囊括S
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso数据处理基础:介绍数据处理的基本概念、流程和应用场景,帮助读者建立对数据处理的整体认识。SQL语言与应用:详细讲解SQL的语法和用法,包括数据查询、数据操作和数据定义等,以及在实际应用中的最佳实践。Python数据挖......
  • 多线程面试基础篇(面试必备,值得收藏)
    1.并发与并行并行:指两个或多个事件在同一时刻发生(同时执行)。并发:指两个或多个事件在同一个时间段内发生(交替执行)。并发指的是在一段时间内宏观上有多个程序同时运行,微观上这些程序是分时的交替运行在多个CPU系统中,则这些可以并发执行的程序便可以分配到多个处理器上(CPU),......