在javascript中每个函数调用几乎都是一个新线程吗?

时间:2013-11-20 01:15:23

标签: javascript multithreading node.js

我来自C背景,发现javascript的异步性非常酷。但我不知道事情是如何异步的。是不是每个函数调用实际上都是一个新线程?

1 个答案:

答案 0 :(得分:5)

不,这不是一个新线程:它正在运行一个事件循环。

C中以相同方式工作的系统示例:

  • 基于选择的轮询,你留在一个线程,处理select的结果,然后再次调用select以使下一个工作
  • 经典Win32编程,您可以将消息发送到事件队列。该程序的核心是“Dequeue message.Dispatch message。重复直到收到退出消息”
  • 几乎所有其他GUI编程环境: - )

虽然您可以将其视为第一次近似的线程,但事实并非如此。线程并行运行,事件以串行方式运行。您永远不必担心并发访问数据,但您必须担心会使事件循环挨饿(而不是经常返回它)。