[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16815] Re: File.flock blocks forever

From: Michael Witrant <mike@...>
Date: 2001-06-23 14:24:46 UTC
List: ruby-talk #16815
Hello again,

I repost about this thread because it seems to be a bug in ruby and
nobody replied.
I made a simplier script to test it. I think this use of flock is valid
and should not block all threads (other threads not concerned by the
lock are also blocked).
I tested it with fork instead of threads and it seems to work.
File.flock might not be thread safe?
The script creates 2 threads that infinitly lock and read a file. Each
thread displays what it does before the function call and the result is:

mike@photon:~$ ruby -vw tmp/flock.rb
ruby 1.6.4 (2001-06-04) [i686-linux]
0: Open
0: Lock
0: Read
1: Open 
1: Lock
tmp/flock.rb:9:in `initialize': Interrupt
        from tmp/flock.rb:9:in `new'
        [...]

Thread #0's Read (f.gets) never returns, so Thread #1 cannot lock the
file.


Here is the script:

Filename = "/tmp/flock-test"
f = open(Filename, "w")
f.puts "foo"
f.close

2.times { |i|
    Thread.new {
	begin
	    loop do
		puts "#{i}: Open"
		f = open(Filename)
		puts "#{i}: Lock"
		f.flock(File::LOCK_EX)
		puts "#{i}: Read"
		puts "#{i}: " + f.gets
		#puts "#{i}: Unlock"
		#f.flock(File::LOCK_UN)
		puts "#{i}: Close"
		f.close
	    end
	rescue Exception => e
	    p e
	end
    }
}


Mike.
midulo.


On Fri, 22 Jun 2001 01:28:52 +0900
Michael Witrant <mike@lepton.fr> wrote:

> Hello,
> 
> I try to use File.flock to lock a file in a cgi script, but I can't
get
> it to work in my test script.
> It creates a file and write "foo". A thread that will write "bar" in
0.1
> secondes is started, and an infinite loop reads the file and print the
> result.
> The script displays some "foo" and waits, probably for the file to be
> unlocked. No "bar". I expected some "foo", then many "bar".
> 
> Here is the script:
> 
> filename = "/tmp/flock-test"
>     
> f = open(filename, "w")
> f.puts "foo"
> f.close
> 
> Thread.new {
>   sleep .1
>   f = open(filename, "w")
>   f.flock(File::LOCK_EX)
>   f.puts "bar"
>   f.flock(File::LOCK_UN)
>   f.close
> }
> 
> loop do
>   f = open(filename)
>   f.flock(File::LOCK_EX)
>   puts f.gets
>   f.flock(File::LOCK_UN)
>   f.close
> end
>     
> With the help of some puts, it seems to be blocking on f.gets in the
> main thread and f.flock in the writing thread.
> If I add "sleep .0001" in the main loop, it works.
> 
> Where am I wrong?
> 
> I tried to search "flock" on ruby-talk.com, but I got an Internal
Server
> Error.
> 
> 
> Mike.
> midulo.
> 

In This Thread