我对阻塞、非阻塞、同步、异步的理解
同步、异步、阻塞、非阻塞这四个概念应该针对IO来讲。
假设有一个名字叫小A的线程,这个IO过程包含在小A的任务中。
一个IO过程包含两个阶段:
阶段一:线程小A等待IO通口有数据到来。
阶段二:来数据了,线程小A开始读取数据。
这两个阶段又各自拥有自己的两种状态:
阶段一
阻塞状态:线程小A等待IO通口有数据到来,如果没有数据,就一直等待,直到有数据到来了,再进一步操作。
非阻塞状态:线程小A查看一下IO通口是否有数据到来,没有数据到来,线程小A就继续执行下一步操作,所以非阻塞状态需要线程小A循环去查看IO通口是否有数据到来,否则线程小A执行下一步后就一去不复回了。
阶段一顺利执行,查询到IO通口有数据到来后,IO过程就进入到阶段二了。
阶段二
同步状态:线程小A一直等到数据读取完毕继续下一步操作。
异步状态:在读取数据的过程中,线程小A可以继续别的操作,其实说明有别的线程帮小A在处理读取数据的这个过程了。

浙公网安备 33010602011771号