Class: ParallelLister

Inherits:
Lister show all
Defined in:
lib/LRH.rb

Instance Method Summary collapse

Methods inherited from Lister

#_list, #limit!, #list_array

Methods inherited from IOAble

#debug!, #debug?, #get_option, #halt!, #job=, #log, #set_option

Constructor Details

#initialize(threads = 4) ⇒ ParallelLister

Returns a new instance of ParallelLister.



124
125
126
127
128
# File 'lib/LRH.rb', line 124

def initialize(threads=4)
    super()
    @threads_number = threads
    @threads = []
end

Instance Method Details

#elementsObject



164
165
# File 'lib/LRH.rb', line 164

def elements
end

#listObject



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/LRH.rb', line 130

def list
    queue = []
    done = false
    Thread.start do
        elements.each do |element|
            puts element
            while @threads.size == @threads_number
                torem = []
                @threads.each do |t|
                    torem.push t unless t.status
                end
                @threads -= torem
                sleep 0.1
            end
            
            @threads.push Thread.start do 
                list_one(element) do |target|
                    queue.push target
                end
            end
        end
        done = true
    end
    
    while !done || queue.size > 0
        while queue.size == 0
            puts "Waiting..."
            sleep 0.1
        end
        
        yield queue.shift
    end
end

#list_one(element) ⇒ Object



167
168
# File 'lib/LRH.rb', line 167

def list_one(element)
end