【问题标题】:Are multiple async file appends on the same file safe?多个异步文件附加在同一个文件上是否安全?
【发布时间】:2015-05-17 01:38:26
【问题描述】:

看看下面的伪代码,对文件的写入是否有可能被破坏?

for(var i=0;i<5;i++)
  fs.appendFile("myfile.txt", "myline"+i+'\n', somecallback)

fs 是found here

我期望的可能性:

myline3
myline4
myline1
myline2
myline0

但这可能吗?

mylimyline4
ne3
myline1
myline2
myline0

在这种情况下,第二次追加将发生在第一次的中间。因为如果发生这种情况,我将不得不手动将写入排队。

【问题讨论】:

    标签: node.js append fs


    【解决方案1】:

    我编写了一个程序来测试它,但无法让它混合不同的附加。

    var fs = require('fs')
    
    var filename = __dirname + '/file.bin'
    var bytes_per_buff = parseInt(process.argv[2]) || 4096
    var num_buffs = parseInt(process.argv[3]) || 256
    var buffs = []
    
    for (var i=0; i<num_buffs; i++) {
        buffs[i] = new Buffer(bytes_per_buff)
        for (var j=0; j<bytes_per_buff; j++) {
            buffs[i][j] = i
        }
    }
    
    fs.writeFile(filename, '', ()=>console.log('file created'))
    for (var i=0; i<num_buffs; i++) {
        (function(buff_num) { //closure to log buff_num
            fs.appendFile(filename, buffs[buff_num], ()=>console.log(buff_num))
        }(i))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-13
      • 2011-12-12
      • 2015-12-29
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2022-10-24
      • 2019-05-20
      相关资源
      最近更新 更多