[#20675] RCR: non-bang equivalent to []= — Tobias Reif <tobiasreif@...>

Hi,

49 messages 2001/09/01
[#20774] Re: RCR: non-bang equivalent to []= — Tobias Reif <tobiasreif@...> 2001/09/03

I wrote:

[#20778] Re: RCR: non-bang equivalent to []= — Kevin Smith <kevinbsmith@...> 2001/09/03

--- Tobias Reif <tobiasreif@pinkjuice.com> wrote:

[#20715] oreilly buch von matz - website online — markus jais <info@...>

hi

43 messages 2001/09/02
[#20717] Re: OReilly Ruby book has snail on cover — ptkwt@...1.aracnet.com (Phil Tomson) 2001/09/02

Actually, thanks for posting it here. I was trying to search OReilly's

[#20922] Re: OReilly Ruby book has snail on cover — Paul Brannan <pbrannan@...> 2001/09/05

On Mon, 3 Sep 2001, Phil Tomson wrote:

[#20768] Minor cgi.rb question — "Hal E. Fulton" <hal9000@...>

I don't have much experience with

25 messages 2001/09/03

[#20770] Calling member methods from C++ — jglueck@... (Bernhard Glk)

Some quetsions have been solved for me, but my message system does not

12 messages 2001/09/03

[#20976] destructor — Frank Sonnemans <ruby@...>

Does Ruby have a destructor as in C++?

25 messages 2001/09/07

[#21218] Ruby objects <-> XML: anyone working on this? — senderista@... (Tobin Baker)

Are there any Ruby analogs of these two Python modules (xml_pickle,

13 messages 2001/09/15

[#21296] nested require files need path internally — Bob Gustafson <bobgus@...>

Version: 1.64

29 messages 2001/09/18
[#21298] Re: nested require files need path internally — David Alan Black <dblack@...> 2001/09/18

Hello --

[#21302] Re: nested require files need path internally — Bob Gustafson <bobgus@...> 2001/09/18

On Tue, 18 Sep 2001, David Alan Black wrote:

[#21303] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21306] Re: nested require files need path internally — Lars Christensen <larsch@...> 2001/09/18

On Tue, 18 Sep 2001, Yukihiro Matsumoto wrote:

[#21307] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21331] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/18

> The big difference is C++ search done in compile time, Ruby search

[#21340] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/18

Hi,

[#21353] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/18

On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

[#21366] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/19

Hi,

[#21368] Re: nested require files need path internally — "Julian Fitzell" <julian-ml@...4.com> 2001/09/19

On 19/09/2001 at 10:12 AM matz@ruby-lang.org wrote:

[#21376] Re: nested require files need path internally — matz@... (Yukihiro Matsumoto) 2001/09/19

Hi,

[#21406] Re: nested require files need path internally — Paul Brannan <pbrannan@...> 2001/09/19

On Wed, 19 Sep 2001, Yukihiro Matsumoto wrote:

[#21315] Suggestions for new CGI lib — anders@... (Anders Johannsen)

From the comp.lang.ruby thread "Minor cgi.rb question" (2001-09-03), I

21 messages 2001/09/18

[#21413] Ruby/objects book in style of The Little Lisper — Brian Marick <marick@...>

I fell in love with Lisp in the early 80's. Back then, I read a book called

36 messages 2001/09/19
[#21420] Re: Ruby/objects book in style of The Little Lisper — Christopher Sawtell <csawtell@...> 2001/09/20

On 20 Sep 2001 06:19:44 +0900, Brian Marick wrote:

[#21479] Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/21

--- Christopher Sawtell <csawtell@paradise.net.nz> wrote:

[#21491] SV: Re: Ruby/objects book in style of The Little Lisper — "Mikkel Damsgaard" <mikkel_damsgaard@...> 2001/09/21

[#21494] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/21

--- Mikkel Damsgaard <mikkel_damsgaard@mailme.dk> wrote:

[#21510] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Todd Gillespie <toddg@...> 2001/09/22

On Sat, 22 Sep 2001, Kevin Smith wrote:

[#21514] Re: SV: Re: Ruby/objects book in style of The Little Lisper — Kevin Smith <kevinbsmith@...> 2001/09/22

--- Todd Gillespie <toddg@mail.ma.utexas.edu> wrote:

[#21535] irb — Fabio <fabio.spelta@...>

Hello. :) I'm new here, and I have not found an archive of the previous

15 messages 2001/09/22

[#21616] opening a named pipe? — "Avdi B. Grimm" <avdi@...>

I'm having trouble reading from a named pipe in linux. basicly, I'm

12 messages 2001/09/24

[#21685] manipulating "immutable" objects such as Fixnum from within callbacks & al... — Guillaume Cottenceau <gc@...>

Hello,

15 messages 2001/09/25

[#21798] Ruby internal (guide to the source) — "Benoit Cerrina" <benoit.cerrina@...>

Hi,

22 messages 2001/09/28

[ruby-talk:21082] Re: CGI in Ruby with Apache and Exec

From: stephen.hill@... (Steve Hill)
Date: 2001-09-11 12:19:22 UTC
List: ruby-talk #21082
p_hilton@excite.com (Phillip Hilton) wrote in message news:<f50dc966.0108290943.555e7fa9@posting.google.com>...


Phil,
I have added some comments on your fork-exec problem.

> 2: I can't seem to manage to get  'exec' up and running. Here is my
> code where am I going wrong.
> 
> Function: The parent passes 3 variables to multiple child processes.
> Each child is given the same regexpression but a differrent file to
> parse and a different file to write the matches into.
> 
> The parent calls process.wait as many times as there are children.
> (Next part not shown) The parent then scoops up the results in an
> array for output in CGI format.
> _______________________________________________________________________________
> 
> bert=["c:\\westd\\westdb1.txt","c:\\westd\\westdb2.txt","c:\\westd\\westdb4.txt","c:\\westd\\westdb5.txt","c:\\westd\\westdb6.txt","c:\\westd\\westdb7.txt"]
> ernie=["c:\\westd\\resregmatch1.txt","c:\\westd\\resregmatch2.txt","c:\\westd\\resregmatch3.txt","c:\\westd\\resregmatch4.txt","c:\\westd\\resregmatch5.txt","c:\\westd\\resregmatch6.txt,""c:\\westd\\resregmatch7.txt"]
> re_str="((at[ct])|(act))"
> 
> 
> 	(0...bert.length).each  {|i| 
>          exec ("c:\\westd\\cherub3.rb","#{re_str}", "#{bert[i]}",
> "#{ernie[i]}")
> 	 if fork==nil}
> 
>         (0...bert.length).each{|i| i=i-1	 
>          Process.wait
> 	}
> 

OK, your problem here is that you want your main program to stall
untill all the exec'ed processes have finished.

I might add here that I was the idiot who suggested using exec rather
then threading to Phil, because he may be going to a load-balanced set
of machines, where it may be easier to spawn processes onto the
load-balancer and then wait, rather than thread on one machine (OK, I
also know of druby, but have never tried it). I suspect that the
relative merits of threading vs spawning may depend on the exact setup
used in the long run, and where the bottlenecks prove to be.

So what you want to do is to (In Margret Thatcher's words) count them
all out, and count them all back. In this case, you know that you have
spawned bert.length processes, so you can use this as a count, but in
general you might need to count the processes as they go out.

process_count=0
(0...bert.length)arg_array.each do |i|
    if (fork==nil)
        exec ("c:\\westd\\cherub3.rb",re_str, bert[i], ernie[i])
    else
        process_count+=1
    end
end

#now you can wait as the answers come in

while (process_count!=0)
    Process.wait
    process_count-=1
end

Of course, a better (but more complex method - and I appreciate that
your thesis is due in Friday) would be to store a hash of the process
ID's and the data used as you perform the fork calls, so you can
post-process as the exec's return (this is where you might want
multiple threads)

processes=Hash.new
(0...bert.length)arg_array.each do |i|
    pid=fork
    if (pid==nil)
        exec ("c:\\westd\\cherub3.rb",re_str, bert[i], ernie[i])
    else
        processes[pid]=ernie[i]
    end
end

#now you can wait as the answers come in

while (processes.size>0)
    pid=Process.wait2[0]
    
    #now do some post-processing e.g. load the results file
    #and mess about with it
    #may want to do this in a seperate thread
    
    process.delete(pid)
end

In This Thread

Prev Next