同步和异步

3 分钟阅读 498 字 + 175 词
同步 就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。 用户态主动去内核态获取数据
异步是 指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。 内核主动将数据放到了用户态指定的空间,之后通知用户态去处理数据(利用回调)
阻塞和非阻塞 强调的是程序在 等待调用结果时的状态 . 阻塞调用是指调用结果返回之前,当前线程会被挂起 。调用线程只有在得到结果之后才会返回。 非阻塞调用 指在不能立刻得到结果之前,该 调用不会阻塞当前线程 。 对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。
同步和异步 强调的是 消息通信机制 (synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该“调用”就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是 由“调用者”主动等待这个“调用”的结果 。而异步则是相反, "调用"在发出之后,这个调用就直接返回了 ,所以没有返回结果。换句话说, 当一个异步过程调用发出后,调用者不会立刻得到结果 。而是在"调用"发出后, "被调用者"通过状态、通知来通知调用者 ,或 通过回调函数处理这个调用

目录