【问题标题】:In NodeJS: is it possible for two callbacks to be executed exactly at the same time?在 NodeJS 中:是否可以同时执行两个回调?
【发布时间】:2012-10-17 21:57:20
【问题描述】:

假设我有这个代码:

function fn(n)
{
  return function()
  {
    for(var k = 0; k <= 1000; ++k) {
      fs.writeSync(process.stdout.fd, n+"\n");
    }
  }
}

setTimeout(fn(1), 100);
setTimeout(fn(2), 100);

12 是否可以互换打印到 stdout(例如 12121212121...)?

我已经对此进行了测试,但它们并没有互换使用,即1111111...222222222...,但很少有测试无法证明,我担心会发生类似111111211111...2222222... 的事情。

换句话说:当我在 Node 中注册一些回调和事件处理程序时,两个回调可以同时执行吗?

(我知道这可以通过启动两个进程来实现,但是我们将有两个 stdout 并且上面的代码将被拆分为单独的文件等)

另一个问题:忘记节点并笼统地说:在单个进程上的任何语言中,是否有可能同时执行两个函数(即以与上述相同的方式)?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    不,每个回调都将在其自己的“执行框架”中执行。在其他语言中,如果操作发生在不同的线程中,则可能会出现“并行执行”和潜在的冲突,因为由此导致的锁定是可能的。

    【讨论】:

      【解决方案2】:

      只要回调代码是纯同步的,就没有两个函数可以并行执行。 开始在里面使用一些异步的东西,比如获取网络结果或插入数据库,tadam:你会遇到并行问题。

      【讨论】:

        猜你喜欢
        • 2018-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        • 2021-07-03
        • 2011-03-10
        • 1970-01-01
        相关资源
        最近更新 更多