使写入文件线程安全

use*_*294 6 ruby file-io thread-safety

我在ruby文件中有一个函数,它写入这样的文件

File.open("myfile", 'a') { |f| f.puts("#{sometext}") }
Run Code Online (Sandbox Code Playgroud)

在不同的线程中调用此函数,使得上面的文件写入不是线程安全的.有没有人知道如何以最简单的方式使这个文件写入线程安全?

更多信息:如果重要,我使用的是rspec框架.

xda*_*azz 11

你可以通过File#flock来锁定

File.open("myfile", 'a') { |f| 
  f.flock(File::LOCK_EX)
  f.puts("#{sometext}") 
}
Run Code Online (Sandbox Code Playgroud)