Class: ParallelLister
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
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
#elements ⇒ Object
164
165
|
# File 'lib/LRH.rb', line 164
def elements
end
|
#list ⇒ Object
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
|