并发编程学习①

161 阅读2分钟

这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战

并行与串行

并行和串行指的是任务的执行方式

串行处理:多个任务按照顺序执行,完成一个在执行一个。比如页面调用方法A、方法B,需要任务A执行完成之后再去执行任务B

并行处理:多个任务同时执行,异步是多任务并行的前提条件。比如调用方法A、方法B、方法C等,他们都是各自管自己的事情,无需等待谁执行完成,互不影响。

同步与异步

同步与异步指的是访问数据的方式

  • 同步需要主动读写数据,读写的速度相对较慢,在读写数据的过程中还是会阻塞,执行同步任务需要用时较久的时候,代码就会阻塞;
  • 异步只需要I/O操作完成的通知,并不主动读写数据,由操作系统内核完成数据的读写。

对于异步的方法,谁先返回结果是不知道的。在实际应用中,在处理异步请求的过程中,有时候往往需要它是同步的,需要等待上一个任务执行的结果。

阻塞与非阻塞

阻塞与非阻塞可以理解为进程/线程要访问的数据是否就绪,进程/线程是否需要等待。

阻塞和非阻塞是说线程或者进程在等待访问数据的时候的一个状态,阻塞是说读数据的时候需要等着,不能做其他的事情;非阻塞是说不等这个任务执行完成,可继续往下执行。

后期预告:

  • 异步I/O与回调
  • 事件驱动与订阅发布
  • Thunk原理:解决回调陷阱的几种方式之一
  • Promise原理:利用状态机机制,如何去解决异步回调的陷阱问题
  • Generater原理:Generater是什么?
  • Co原理:Co是什么?
  • Async/await原理
  • JS并行