>>>>> "Y" == Yukihiro Matsumoto <matz / netlab.co.jp> writes: Y> No, File#flock is based on system call flock(2), which does not aware Y> of Ruby's threads. For thread synchronization, use Mutex. I don't understand this case : pigeon% cat b.rb #!/usr/bin/ruby def toto(message) begin f = open("toto1", "w") f.flock(File::LOCK_EX) p "#{message} with lock" sleep 3 ensure f.close p "#{message} finish" end end t1 = Thread.new { toto("First Thread") } t2 = Thread.new { toto("Second Thread") } t1.join t2.join pigeon% b.rb "First Thread with lock" "First Thread finish" "Second Thread with lock" "Second Thread finish" pigeon% Guy Decoux