0

我试图让多个降雪线程使用 write.table() 写入同一个文件。在少数情况下,行被破坏,即我观察到它看起来像是多行混合在一起,我认为这是两个线程尝试同时写入同一个文件时。

一个例子是:

require(snowfall)
sfInit(parallel = TRUE, cpus = 16)
sfLapply(1:10000,function(x){
mytable = data.frame(a = c(1,2,3),b = c(4,5,6))
write.table(mytable,"mytable.csv",sep = ',',append = T,col.names = F)
})

有没有办法确保一次只有一个线程写入文件,本质上是一个线程锁定文件,写入文件然后释放锁定?

4

0 回答 0