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)