首页 > 其他分享 >并发并行;同步异步;阻塞非阻塞

并发并行;同步异步;阻塞非阻塞

时间:2023-08-11 16:14:53浏览次数:34  
标签:异步 同步 并行 阻塞 并发 任务

并发/并行;同步/异步;阻塞/非阻塞

并发/并行

# 并行
同一时刻,执行多个任务的能力,并行必须是多cpu支持

# 并发
同一时间段内,执行多个任务的能力,所有操作系统都支持并发,单核cpu也可以并发

# 串行
多个任务依次进行,每个任务必须等待上一个任务完成才能开始

#扯出去
1.python开启多线程,即便有多核CPU也只能并发,无法进行。原因是有GIL锁
2.python开启多进程+多核CPU才能并行
3.io密集型使用多线程(大部分都是io不消耗CPU,开多进程没有用),计算密集型使用多进程(提高CPU利用率)

同步/异步

# 程序调用的角度

# 同步
同步是一件事一件事的做;只有执行完前一个任务,才会执行下一个任务。同步意味着有序

# 异步
当一个任务开始执行了,你无需等待该任务执行完成,就可以切换到另外一个任务上。异步意味着无序

# 我们用过的异步
-借助与其它框架:scrapy、celery
-fastapi:异步web框架
-sanic:异步web框架

阻塞/非阻塞

# 程序执行的角度

# 阻塞
程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的

# 非阻塞
程序在等待某操作过程中,自身不被阻塞,可以继续运行干别的事情,则称该程序在该操作上是非阻塞的


# 同步阻塞
# 异步阻塞
# 同步非阻塞
# 异步非阻塞

参考链接:点击这里

标签:异步,同步,并行,阻塞,并发,任务
From: https://www.cnblogs.com/10086upup/p/17623212.html

相关文章

  • 异步线程变量传递必知必会---InheritableThreadLocal及底层原理分析
    InheritableThreadLocal简介笑傲菌:多线程热知识(一):ThreadLocal简介及底层原理3赞同·0评论文章上一篇文章我们聊到了ThreadLocal的作用机理,但是在文章的末尾,我提到了一个问题,ThreadLocal无法实现异步线程变量的传递。什么意思呢?以下面的代码为例子:@SneakyThrowspublicBo......
  • CI+JUnit5并发单测机制创新实践
    一.现状·问题针对现如今高并发场景的业务系统,“并发问题”终归是必不可少的一类(占比接近10%),每次出现问题和事故后,需要耗费大量人力成本排查分析并修复。那如果能在事前尽可能避免岂不是很香?二.分析原因当前并发测试多数依赖测试人员进行脚本测试,同时还依赖了研发和产品识......
  • TaskDecorator——异步多线程中传递上下文等变量
    目录TaskDecorator定义TaskDecorator实例线程池使用TaskDecorator开发中很多数据如oauth2的认证信息,日志TracerId都是在请求线程中的,如果内部使用多线程处理就存在获取不到认证信息或TraceId的问题。这时候就需要处理子线程与主线程间数据传递的问题。TaskDecorator这个......
  • 文盘Rust -- Mutex解决并发写文件乱序问题
    在实际开发过程中,我们可能会遇到并发写文件的场景,如果处理不当很可能出现文件内容乱序问题。下面我们通过一个示例程序描述这一过程并给出解决该问题的方法。usestd::{fs::{self,File,OpenOptions},io::{Write},sync::Arc,time::{SystemTime,UNIX_EPOCH}......
  • 并发工具类Phaser
    前言在面试这一篇我们介绍过CountDownLatch和CyclicBarrier,它们都是jdk1.5提供的多线程并发控制类,内部都是用AQS这个同步框架实现。在我们的实际项目中,有很多场景是需要从数据库查询一批数据,多线池执行某些操作,并且要统计结果,我们对这个过程做了一些封装,由于要统计结果,所以需要......
  • CompletableFuture异步多线程
    importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.ExecutionException;publicstaticvoidmain(String[]args)throwsInterruptedException,ExecutionException{longstartTime=System.currentTimeMillis();//调用用户服......
  • DB2和 Oracle的并发控制(锁)比较
    2005年12月26日在实际的生产运行环境中,笔者在国内很多客户现场都看到开发人员和系统管理人员遇到很多有关于锁而引起的性能问题,进而被多次问起DB2和Oracle中锁的区别比较问题,笔者根据自己在工作中对DB2和Oracle数据库的使用经验积累写下这篇文章。<!--startRESERVED......
  • hibernate,spring 控制并发访问
    数据库(和其他的事务系统)试图确保事务隔离性(transactionisolation),这意味着,从每个并发事务的观点来看,似乎没有其他的事务在运行。传统上而言,这已经通过锁(locking)实现了。事务可以在数据库中一个特定的数据项目上放置一把锁,暂时防止通过其他事务访问这个项目。一些现代的数据库(如Or......
  • 高性能爬虫的秘诀:合理配置HTTP代理池实现并发请求
    哈喽,爬虫程序员们大家好!你们有没有遇到这样的情况:爬取的数据量庞大,但爬虫速度却慢得难以忍受?别着急,今天我将向大家分享高性能爬虫的秘诀之一:合理配置HTTP代理池实现并发请求。这一技巧不仅能够显著提升爬虫的响应速度,还能帮助我们突破IP封锁和反爬虫机制的限制。首先,让我们了解一下......
  • 中间件解析:提升并发编程能力,构建高性能系统
    用Netty开发中间件:高并发性能优化最近在写一个后台中间件的原型,主要是做消息的分发和透传。因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty4版本。Netty果然效率很高,不用做太多努力就能达到一个比较高的tps。但使用过程中也碰到了一些问题,个人觉得都......