2014-04-28 139 views
4

我有一個Ruby文件中的函數,寫入一個文件這樣製作寫入文件線程安全

File.open("myfile", 'a') { |f| f.puts("#{sometext}") } 

調用此功能在不同的線程,使得文件寫入如上面不是線程安全。有沒有人有任何想法如何以最簡單的方式使這個文件寫入線程安全?

更多信息:如果有關係,我使用rspec框架。

回答

7

你可以給通過File#flock

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