[#6363] Re: rescue clause affecting IO loop behavior — ts <decoux@...>

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

17 messages 2000/11/14
[#6367] Re: rescue clause affecting IO loop behavior — David Alan Black <dblack@...> 2000/11/14

Hello again --

[#6582] best way to interleaf arrays? — David Alan Black <dblack@...>

Hello --

15 messages 2000/11/26

[#6646] RE: Array Intersect (&) question — Aleksi Niemel<aleksi.niemela@...>

Ross asked something about widely known and largely ignored language (on

23 messages 2000/11/29
[#6652] RE: Array Intersect (&) question — rpmohn@... (Ross Mohn) 2000/11/29

aleksi.niemela@cinnober.com (Aleksi Niemel) wrote in

[#6723] Re: Array Intersect (&) question — Mathieu Bouchard <matju@...> 2000/12/01

> >Use a hash. Here's code to do both and more. It assumes that

[#6656] printing/accessing arrays and hashes — raja@... (Raja S.)

I'm coming to Ruby with a Python & Common Lisp background.

24 messages 2000/11/30

[ruby-talk:6386] lots of Threads

From: Hugh Sasse Staff Elec Eng <hgs@...>
Date: 2000-11-15 20:21:21 UTC
List: ruby-talk #6386
If I have an array to be filled with computationally heavy stuff, 
I could use a load of Threads to populate it in parallel.  If I often
have to re-populate it, I don't want to kill them all off and start
them again.

    my_array = Array.new(MANY)
    threads = []
    my_array.each_index { |i|
        threads << Thread.new(i) { |ti|
            loop {
		#...
		my_array[ti] = result
		Thread.stop
            }
        }
    }

I can then use

    Thread.pass while threads.detect {|t| t.status == "run"}

for may Thread.main to wait till they have finished populating the 
array.
I can kick them off again with threads.each {|t| t.run} of course.

My questions are:

Is this sensible?

Are there rules of thumb to determine how expensive the computation 
must be to make this worthwhile?

What happens if Thread.main is the only thread left, and it calls 
Thread.pass? 

	Hugh
	hgs@dmu.ac.uk


In This Thread

Prev Next