gpt4 book ai didi

jquery - 为什么这个回调函数不会导致竞争条件?

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:55 26 4
gpt4 key购买 nike

我不明白为什么以下代码不会导致潜在的竞争条件。看起来 counttotalBytes 是可以被多个回调函数访问的变量,我觉得 count--totalBytes += stats.size 可能会导致竞争,因为您无法保证传递给 fs.stat() 的回调函数的顺序(因为它是一个 IO 操作)。

var fs = require('fs');

var count = 0,
totalBytes = 0;

function calculateByteSize() {
fs.readdir(".", function (err, filenames) {
var i;
count = filenames.length;

for (i = 0; i < filenames.length; i++) {
fs.stat("./" + filenames[i], function (err, stats) {
totalBytes += stats.size;
count--;
if (count === 0) {
console.log(totalBytes);
}
});
}
});
}

calculateByteSize();

最佳答案

Javascript 只有一个线程,因此一次只有一个回调可以修改 count。但是,不能保证回调的顺序。

关于jquery - 为什么这个回调函数不会导致竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com