返回「计算机、信息技术与工程」

同步和异步&阻塞和非阻塞

更多
Markdown 结构化数据
本文目录 7 个章节

同步和异步&阻塞和非阻塞

# 同步和异步&阻塞和非阻塞

创建时间:2020/6/17 21:05

同步和异步

同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)

同步(Synchronous)

同步,就是在发出一个 调用 时,在没有得到结果之前,该 调用 就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由 调用者 主动等待这个 调用 的结果。

同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

异步(Asynchronous)

调用 在发出之后,方法调用就会立即返回,调用者就可以继续后续的操作。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在 调用 发出后, 被调用者 通过状态、通知来通知调用者,或通过回调函数处理这个调用。

异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

如何选择

就是看需要的请求的数据是否是程序继续执行必须依赖的数据 优缺点:

  1. 同步的执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况;
  2. 异步的执行效率高,节省时间,但是会占用更多的资源,也不利于我们对进程进行控制

阻塞和非阻塞

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。

非阻塞

非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。