【发布时间】:2013-12-08 10:17:20
【问题描述】:
异步操作必须在不同的线程中执行似乎是合乎逻辑的。也就是说,不涉及多线程就不能创建任何异步动作。毕竟,如果它不在不同的线程中执行,它会阻塞主线程,因此它不再是异步的。
但是,他们告诉我异步并不一定意味着涉及额外的线程。如果我没记错的话,他们说至少对于 javascript 来说是这样的。
所以我的问题是:异步操作是否必须在不同的(非主)线程中执行总是,并且可以在没有多线程(单独的线程)的情况下存在异步计算吗?
【问题讨论】:
-
线程允许异步计算,因为操作系统会调度它们,但其他调度机制也是可能的。例如,Go 使用 goroutine,它们是 go 运行时并发调度的轻量级“线程”(虽然不是操作系统意义上的)。
标签: multithreading asynchronous