异步必要涉及多线程还是并行?

时间:2010-11-03 15:13:55

标签: asynchronous

或者我们可以拥有在同一个线程中执行的异步代码。

3 个答案:

答案 0 :(得分:4)

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

这是真相的真正愚蠢的版本,但这对于这次讨论来说是正确的。如需更多阅读,我建议你从这里开始:

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

答案 1 :(得分:2)

你绝对可以编写异步的代码,但是单线程。一个例子可能是打开一堆套接字的东西,它使用select和非阻塞IO为不同的“会话”编写小的,简短的东西,并将它们分成块。这肯定是异步的,具体取决于发送的内容及其控制方式。

你可以在没有网络的情况下做事,但这可能是最简单的例子。

答案 2 :(得分:0)

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