2010-11-03 53 views
3

或者我们可以拥有在同一个线程中执行的异步代码。异步需要涉及多线程还是并行?

+0

异步!=多线程!=并行 – 2012-11-13 12:17:33

+0

很明显。我的问题是不同的,如果你有任何真正的答案,它可以自由贡献 – 2012-11-14 11:25:01

回答

4

其实,是的,你可以拥有在同一个线程中执行的异步代码。现在最基本的IO实际上是异步的;读取和写入请求并在CPU之外处理,当它们完成时设置标志,然后程序可以处理这些值。程序会在正常处理期间偶尔检查标志的值,并在该值指示可用性时做出响应。操作系统通常会协调这个更高级别的程序。

这是一个非常愚蠢的事实,但它对于这个讨论来说已经足够正确了。欲了解更多的阅读,我建议你从这里开始:

http://en.wikipedia.org/wiki/Asynchronous_I/O

2

你绝对可以编写代码,这将是异步的,但单线程。一个例子可能是一些打开的套接字,它使用select和non-blocking IO为不同的“会话”写出小而短的内容,并将它们分解为块。这绝对是异步的,取决于发送的内容和控制方式。

你可以在没有网络的情况下做事情,但这可能是最微不足道的例子。

+0

我相信lighttpd(http://www.lighttpd.net/)这样工作。 – ThomasH 2011-05-09 14:34:47

0

异步是常见的是JavaScript的(用于Web服务,例如),但几乎所有的JavaScript until now一直是单线程的。