在0.7.0中,引入了"Experimenetal isolates support" [原文如此]。除了一些模糊的想法,我从来没有理解这一点,他们提供了类似线程的功能,但没有线程问题。也许这对解决Node的调试/错误处理故事很有帮助。
但是,没有人能够解释它们是什么,无论是在博客中还是在前几个谷歌搜索结果中。什么是分离株?他们为什么要介绍给Node? p>
今天早上,一系列GitHub问题(2662,2663,2665以及可能更多)被关闭,评论“隔离已死”。发生了什么?为什么这个被认为是个好主意,从我能说的是0.7的标题功能,死?
答案 0 :(得分:10)
在此解释:http://groups.google.com/group/nodejs/msg/6b8b8a487d2ab817
在我收到消息之前,Ben刚刚哄我:)
答案 1 :(得分:1)
您可以将Isolate视为V8运行时的独立实例。它有自己的内存管理(GC)。该名称来自Chrome执行引擎,您可以在其中拥有多个选项卡,每个选项卡都有自己的JavaScript环境引擎。每个选项卡(和JS环境)必须彼此“隔离”,因此页面都不能访问另一个页面环境(window.local或window.document)。这就是V8具有Isolate对象的原因,它允许它在多个环境(页面/标签)中并行运行(隔离)。
答案 2 :(得分:1)
以防万一link @isaacs邮报破裂了,这里的内容是:
隔离功能旨在使运行成为可能 child_process.fork()在一个线程中,而不是一个完整的过程。的 理由是降低启动新子节点的成本 实例,以及允许使用共享快速传递消息 二进制附件中的内存,同时保留节点的语义 通过将它们保留在完全隔离的v8中来实现child_process 实例。
这是一个非常有用的实验,但最终证明 导致节点内部功能过于不稳定,无法证明 在这个时候继续。它需要很多复杂性 被添加到libuv和node中,并且不太可能产生足够的收益 值得投资。
我们将回滚已添加到master中的更改 支持隔离,而是专注于域和其他 承诺增加稳定性并简化调试。这个变化 将降落在0.7.3。我们完全有可能决定使用 v8会隔离在某些将来的节点版本中,但它们不会出现在 0.8。
如果您热切希望使用此功能,请查找 您对这一决定感到震惊或沮丧,请与我联系 直。我们不是想让任何人陷于困境,我愿意 了解该功能已承诺了一段时间。如果这 给您带来麻烦,让我们找出另一种使用方法 案件处理。
倒退从来都不容易,但是做实验意味着 有时会发现您的方向错误。的 我们越早进行更改,就越容易。
谢谢。