首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“异步”、“非阻塞”和“并发”是否相互暗示?

“异步”、“非阻塞”和“并发”是否相互暗示?
EN

Stack Overflow用户
提问于 2017-08-01 03:19:22
回答 2查看 164关注 0票数 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-01 06:09:38

非阻塞操作基于两种方法:

  • 只需在没有数据的情况下返回(当没有数据可用时-在这种情况下,调用者必须自己“返回”并再次“读取”)。
  • 通过使用回调。在这种情况下,“阻塞”意味着等待操作到达特定状态,而“非阻塞”则意味着触发操作--当达到该状态时,通知您。

请注意:两个选项都是而不是意味着客户端的并发或多个线程。您绝对可以使用单个进程来实现这样的系统(例如,协同线node.js )。

从这个意义上讲,non-blocking操作总是asynchronous --您不知道它什么时候会给您带来结果--或者什么时候它会给您回电话。这两个概念都可以使用concurrency,实现,但绝对需要这样做。

票数 3
EN

Stack Overflow用户

发布于 2017-08-01 03:57:43

非阻塞和并发并不真正适用于单线程程序,因为它们指的是管理多个线程的方法。非阻塞意味着程序不需要等待所有线程完成才能继续运行,而并发计算只能在有多个线程执行计算时才能发生。(如果我错了,请有人纠正我。)

异步是唯一适用于单线程编程的术语,其形式是人工输入、与其他程序的通信等。因此,不,它们在单线程程序的上下文中并不相互暗示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45428408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档