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

同步和异步是针对应用程序(用户空间)和内核的交互而言的。

阻塞和非阻塞指的是用户空间和内核空间IO操作的方式

 

同步:用户空间要的数据,必须等到内核空间给它才做其他事儿。

异步:用户空间要的数据,不需要等到内核空间给它,才做其他事情。内核空间会异步通知用户进程,并把数据直接给到用户空间。

 

阻塞:用户空间通过系统调用(systemcall)和内核空间发送IO操作时,该调用是阻塞的 (即该调用要一直等待到内核空间处理返回结果)

非阻塞:用户空间通过系统调用(systemcall)和内核空间发送IO操作时,该调用时不阻塞的(即该调用发送到内核空间之后,立即返回,内核空间处理结果需要用户空间再次轮询发起调用获取),直接返回的,只是返回时,可能没有数据而已。

 

同步阻塞IO

 

 

同步非阻塞线IO

 

 用户线程发起IO请求时立即返回。但并未读取到任何数据,用户线程需要不断发起IO请求,知道数据到达后,才真正读取到数据,继续执行。

 

posted @ 2022-04-22 08:53  Java新人开发  阅读(125)  评论(0)    收藏  举报