异步与多线程

基本概念

  1. 并发: 在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间;主要指在同一时间段内管理多个任务;并发可由多种方式实现,包括同步,异步,多线程,协程等。
  2. 互斥: 进程间相互排斥的使用临界资源的现象,就叫互斥。
  3. 同步: 进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。
  4. 并行: 在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特征;在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行。在多处理器上的程序才可实现并行处理。从而可知,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。
  5. 多线程: 多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。
  6. 异步: 异步编程是指任务的执行和任务的调用者的执行是分离的,异步操作,允许调用者在等待某个任务完成时,继续执行其他任务,不需要阻塞等待任务完成。异步和同步是相对的,同步是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。
       异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。

异步与多线程

关系异步编程主要关注任务的执行状态,非阻塞的管理多个任务,使得执行某些操作时不阻塞程序的其他操作;多线程主要是说任务的执行过程是并发执行的。可以理解为异步是目的和结果,而多线程是其中一种实现手段,异步可以在单线程内实现,也可以通过多线程来实现。

异步

异步编程是指任务的执行和任务的调用者的执行是分离的,异步操作,允许调用者在等待某个任务完成时,继续执行其他任务,不需要阻塞等待任务完成。
异步执行模式下,任务会在后台执行,程序的主线程或调用县城会继续进行其他操作;当任务完成时,会出发回调、事件或更新结果,通常没有线程的上下文切换。也可以使用多线程来实现异步操作。

适用场景

  • I/O密集型任务:文件读写,数据库查询,网络请求等
  • 事件驱动编程:图形用户界面、网络服务器等

多线程

多线程指程序可以同时运行多个线程,每个线程独立执行一个任务,有自己的执行上下文,操作系统通过CPU的上下文切换来管理多个线程的执行。
多线程模式下,每个线程可以并行执行代码,每个线程都有自己的线程栈,线程之间可以在CPU核心间切换。

适用场景

  • 计算密集型任务:大规模计算、图像处理、数据分析等,可以充分利用多核处理器进行并行计算。
  • 需要多任务并行处理的场景:如游戏开发中同时处理,渲染,物理模拟等过程。

参考内容

并发,并行,异步,多线程
并发、并行、线程、进程、异步、同步、阻塞、非阻塞
一篇文章,搞懂异步和多线程的区别
ChatGPT

posted @   岛dao  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示