并发、并行、异步、同步?异步与多线程的区别?

先说结论:

  • 总结:
    • 异步:一个线程(不浪费其他线程的资源,多线程会因为web中的IO操作而导致时间浪费)通过某种方式(如:并发+回调函数)来实现多个"时间线"。特点:1是在一个"时间线"中的某时刻,另一个"时间线"的结果不一定会返回。2是简单高效(小而美)
    • 多线程:多个线程(多个线程同时工作,因为计算密集的应用,如视频处理,不像web中IO操作而使某些线程停滞)通过并发的方式来实现多个线程分工合作,同时来完成计算,从而提高CPU的利用率与效率。特点是比较复杂,多线程会有很多要考虑的因素,如线程安全(总之实现多线程代码比较复杂)。
  1. 并发
    1. 一个单核CPU,通过分配时间片的方式,执行多个任务(多个时间线上快速轮流工作)。
  2. 并行
    1. 多核CPU,不同核执行不同任务,从而实现多个任务(多个人从不同位置开始做一件事)
  3. 同步
    1. 只有一条时间线(代码一行一行执行)
  4. 异步
    1. 有多个时间线(可以开辟新的时间线,时间线相互独立,所以会出现A时间线需要B时间线的结果,但是B还没有得到结果的情况。通过AJAX或fetch来实现,通过Promise|Axios|aysnc/await来优化结构)
  • Javascript的异步:
    • 通过回调的方式,在一个主线程中,用并发的形式实现异步
  • 异步多线程,都是实现多个时间线的方法
    • 异步:适合需要较多时间线如web应用(需要大量IO操作,特点是请求与返回需要时间)
      • 如果使用多线程,每个线程都会在异步返回结果之前浪费很多时间。而且线程内存开销,线程切换开销,都会浪费很多资源。
    • 多线程:适合计算密集的应用(如,视频渲染,不可能一帧一帧渲染,而是多个核心分工一起合作)
      • 因为:
        • 每个线程不会因为因为IO浪费时间
        • 可以让每块CPU发挥作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值