[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01210] Re: File#flock

From: ts <decoux@...>
Date: 2000-01-31 14:58:00 UTC
List: ruby-talk #1210
>>>>> "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

In This Thread