同步、异步、阻塞、非阻塞

#### 理解一:
在处理 IO 的时候,阻塞和非阻塞都是同步 IO。
只有使用了特殊的 API 才是异步 IO。


作者:陈硕
链接:https://www.zhihu.com/question/19732473/answer/26091478
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
#### 理解二:
同步异步是行为,阻塞非阻塞是状态。同步异步的时候,线程A与B的行为处于切换行动过程中,同步按固定顺序执行,异步不按固定顺序执行,而是切换执行;阻塞非阻塞的时候,线程A与B的处于等待过程中,阻塞等待返回结果,非阻塞直接返回,不一定是所期望的结果,但仍然继续往下执行。
 
#### 理解三:
  1. 阻塞/非阻塞, 同步/异步的概念要注意讨论的上下文:
  • 在进程通信层面, 阻塞/非阻塞, 同步/异步基本是同义词, 但是需要注意区分讨论的对象是发送方还是接收方。
  • 发送方阻塞/非阻塞(同步/异步)和接收方的阻塞/非阻塞(同步/异步) 是互不影响的。
  • 在 IO 系统调用层面( IO system call )层面, 非阻塞 IO 系统调用 异步 IO 系统调用存在着一定的差别, 它们都不会阻塞进程, 但是返回结果的方式和内容有所差别, 但是都属于非阻塞系统调用( non-blocing system call )

2. 非阻塞系统调用(non-blocking I/O system call 与 asynchronous I/O system call) 的存在可以用来实现线程级别的 I/O 并发, 与通过多进程实现的 I/O 并发相比可以减少内存消耗以及进程切换的开销。


作者:萧萧
链接:https://www.zhihu.com/question/19732473/answer/241673170
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 
posted @ 2021-09-17 15:43  一只小菜菜鸟  阅读(49)  评论(0)    收藏  举报