我想知道Node.js中的数据访问是否需要互斥锁/锁。
不!在没有其他代码可运行时立即处理事件,这意味着不会发生争用,因为只有当前正在运行的代码才能访问该内部数组。作为节点是单线程的副作用,长时间的计算将阻止所有其他事件,直到完成计算为止。
我了解Javascript(因此Node.js)是单线程的。我只是不清楚事件的处理方式。事件会中断吗?
不,事件不会中断。例如,如果将a
while(true){}放入代码中,它将停止执行任何其他代码,因为总有另一个循环要运行。如果您需要长时间运行计算,最好使用process.nextTick,因为这将允许它在没有其他任何运行的情况下运行(我对此感到困惑:下面的示例表明我可能正确运行,可能不会中断)。
如果还有其他问题,请随时进入#node.js并提出问题。另外,我请几个人看看这个,并确保我没有完全错;)
var count = 0;var numIterations = 100;while(numIterations--) { process.nextTick(function() { count = count + 1; });}setTimeout(function() { console.log(count);}, 2);////=> 100//感谢#node.js的AAA_awright :)



