【发布时间】:2017-08-01 15:50:00
【问题描述】:
以下是维基百科的定义:
还有:
在单线程计算的上下文中,“异步”、“非阻塞”和“并发”是否相互暗示?
如果没有,你能举个反例吗?
请注意,我已将“并行”一词排除在外,因为它表示多线程。
【问题讨论】:
标签: multithreading asynchronous concurrency parallel-processing nonblocking
以下是维基百科的定义:
还有:
在单线程计算的上下文中,“异步”、“非阻塞”和“并发”是否相互暗示?
如果没有,你能举个反例吗?
请注意,我已将“并行”一词排除在外,因为它表示多线程。
【问题讨论】:
标签: multithreading asynchronous concurrency parallel-processing nonblocking
非阻塞操作基于两种方法:
请注意:这两个选项都不暗示客户端的并发或多线程。您绝对可以使用单个进程来实现这样的系统(例如 coroutines 或 node.js)。
从这个意义上说:非阻塞操作总是异步 - 因为你不知道它什么时候会给你结果 - 或者它什么时候会调用你背部。这两个概念都可以使用并发来实现,但绝对需要这样做。
【讨论】:
非阻塞和并发并不真正适用于单线程程序,因为它们指的是管理多线程的方式。非阻塞意味着程序在继续之前不会等待所有线程完成,并且只有在有多个线程进行计算时才会发生并发计算。 (如果我错了,请有人纠正我。)
异步是唯一适用于单线程编程的术语,以人工输入、与其他程序的通信等形式。因此,不,它们在单线程程序的上下文中并不相互暗示。
【讨论】: