异步调用和非阻塞调用之间的区别是什么?在阻塞和同步调用之间(请提供示例)?


当前回答

阻塞:在原语(同步或异步)处理完成后,控制返回到调用进程

非阻塞:调用后控制权立即返回进程

其他回答

异步指的是并行完成的事情,比如另一个线程。 非阻塞通常指轮询,即检查给定条件是否成立(套接字是可读的,设备有更多的数据,等等)。

非阻塞:该函数在栈上时不会等待。

异步:在函数调用离开堆栈后,该函数调用的工作可以继续进行

阻塞:在原语(同步或异步)处理完成后,控制返回到调用进程

非阻塞:调用后控制权立即返回进程

synchronous asynchonous
block Block I/O must be a synchronus I/O, becuase it has to be executed in order. Synchronous I/O might not be block I/O Not exist
non-block Non-block and Synchronous I/O at the same time is polling/multi-plexing.. Non-block and Asynchronous I/O at the same time is parallel execution, such as signal trigger…

block/non-block描述了初始化实体本身的行为,它意味着实体在等待I/O完成期间所做的事情 同步/异步描述了I/O初始化实体和I/O执行器(例如操作系统)之间的行为,它意味着这两个实体是否可以并行执行

同步意味着按顺序在另一个结果之后启动一个。

异步意味着一起开始,结果上不保证顺序

阻塞是指某些东西导致执行下一步的阻碍。

无阻塞是指不等待任何东西就继续运行,克服障碍。

我敲门,等着他们开门。(我在这里无所事事)

我敲门,如果他们马上开门,我就和他们打招呼,然后走进去等等。如果门没有立刻打开,我就去下一户人家敲门。(我正在做某事,没有闲着)

只有在下雨的时候我才会出去。(依赖关系存在)

我要出去。可能会下雨。(独立事件,发生时间无关紧要)

同步或异步,两者都可以是阻塞或非阻塞的,反之亦然