【发布时间】:2009-10-15 15:27:38
【问题描述】:
Javascript 没有可见线程(不过——工作线程即将到来,请参阅JavaScript and Threads 中的更多信息)。
但是,它似乎确实有多个似乎同时存在的执行上下文——当您有多个 Firefox Windows 和多个 Firefox/IE 选项卡时,它们是独立的。
当您在页面上有多个 iframe 时,每个 iframe 都有自己的执行上下文,但它们具有共享数据。如果两个 iframe 在同一个域中,它们可以访问彼此的 DOM 并调用彼此的函数。尽管如此,我在谷歌上找不到调度模型的描述,即它是否是:
- 并行/抢先,在这种情况下——你可以暂时挂起吗?任何形式的互斥?
- 合作,在这种情况下——如何让步于另一个环境?
- 不重叠 - 即,主框架中的事件处理程序必须在 iframe 中的事件处理程序被调用之前返回(反之亦然)?
所以问题是:
- 是否有保证的上下文切换模型?
- 如果不是,流行的上下文切换模型是什么?
- 似乎 Firefox 和 IE 在同一选项卡上下文之间以及在同一进程中的不同选项卡/窗口之间有一个不重叠的时间表 - 但我不确定。
- Chrome 对不同的标签页使用系统调度程序(可能使用多个内核,属于并行/抢占组,但我不知道它对同一标签页中的多个帧使用什么。
- 我不知道 Safari 或 Opera。
谢谢!
【问题讨论】:
标签: javascript internet-explorer firefox safari google-chrome