【发布时间】:2013-05-17 20:52:18
【问题描述】:
我对这里的术语有点困惑。让一个程序由一些概念上不同的任务组成:
在异步编程模型中,任务相互交错,但在一个控制线程中。即使在多处理器系统上,单线程异步系统也将始终以交错方式执行。没有实际的并行性。
事件驱动的方法是进行“异步编程”的唯一方法吗?
【问题讨论】:
-
这听起来更像是一个讨论而不是一个实际的问题。你认为会是什么答案?另一种方法?他们的名单? (为此,您仍然必须定义“异步编程”。为什么线程不是异步编程的一种方法?)
-
另外,我建议你看看 Erlang 是做什么的。几乎该语言的全部意义在于实现用于建模并发性的架构,这是通过让潜在的独立任务或参与者交换消息作为共享数据的唯一方式来完成的。这些是在多个线程上协同调度的。这可能与 Node.js 风格不同,后者涉及显式延续;或者它可能被视为同一件事,因为您仍然有一个任务“告诉”另一个任务何时继续。 (高层架构概念含糊不清。)
-
所以我想你的问题读作要求我们将草莓与黄瓜进行比较。在植物学上它们都是水果(甚至是浆果),在烹饪上它们是天壤之别。因此,甚至不清楚哪种标准与您提到的方法不同,因为您总是可以得出细微的相似之处或发现细微的差异。
-
你从哪里复制的那句话?从什么时候开始“异步编程模型”要求“单线程控制”?我可能会打开“node.JS”闪光灯,但通常不会。
-
@MartinJames 在这里cs.brown.edu/courses/cs168/f12/handouts/async.pdf
标签: multithreading node.js events asynchronous concurrency