异步和非阻塞调用?也在阻塞和同步之间
异步调用和非阻塞调用有什么区别?还在阻塞和同步调用之间(请提供示例)?
-
在许多情况下,它们是同一事物的不同名称,但在某些情况下,它们是完全不同的。所以这取决于。术语在整个软件行业中的应用方式并不完全一致。
例如,在经典的套接字 API
中,非阻塞套接字是简单地立即返回并带有特殊的“将阻塞”错误消息的套接字,而阻塞套接字会阻塞。您必须使用单独的函数,例如select
或poll
找出何时是重试的好时机。但是异步套接字(由 Windows 套接字支持)或 .NET 中使用的异步 IO
模式更方便。你调用一个方法来启动一个操作,当它完成时框架会回调你。即使在这里,也有基本的区别。异步 Win32 套接字通过传递 Window
消息将其结果“编组”到特定的 GUI 线程,而 .NET 异步 IO 是自由线程的(您不知道将在哪个线程上调用回调)。所以 _ 他们并不总是意味着同样的事情_ 。为了提炼套接字示例,我们可以说:
- 阻塞和同步 的意思是一样的:你调用 API,它会 挂起线程,直到它得到某种答案 并将它返回给你。
- 非阻塞 意味着如果无法快速返回答案,API 会 立即返回 错误并不执行任何其他操作。所以 必须有一些相关的方式来查询API是否准备好被调用 (即以一种有效的方式模拟等待,避免在紧密循环中手动轮询)。
- 异步 意味着 API 总是立即返回, 已经开始 “后台”工作 来满足您的请求,因此必须有一些相关的方式来获取结果。
-
请解释下你理解的并行和并发、同步和异步、阻塞和非阻塞之间有什么区别?
2021-01-11 关注 0 浏览171 2答案
-
说说阻塞/非阻塞,同步/异步的理解.
2022-03-03 关注 0 浏览41 1答案
-
请你说一下阻塞,非阻塞,同步,异步
2020-01-30 关注 0 浏览887 1答案
-
阻塞和非阻塞子流程调用
2021-01-29 关注 0 浏览92 1答案
-
关于同步异步,阻塞与非阻塞的说法,以下正确的是
2022-03-03 关注 0 浏览38 1答案
-
Java中的非阻塞(异步)DNS解析
2021-01-29 关注 0 浏览120 1答案
-
非阻塞IO与异步IO以及Java实现
2021-01-31 关注 0 浏览103 1答案
-
Linux阻塞与非阻塞串行读取
2021-02-02 关注 0 浏览108 1答案
-
Node.js中的非阻塞或异步I / O是什么?
2021-01-31 关注 0 浏览132 1答案
-
将异步计算包装为同步(阻塞)计算
2021-01-30 关注 0 浏览104 1答案