Skip to content

Commit 8ebb32b

Browse files
committed
tools: cleanup vdoc, use language level channels and threads, instead of the lower level sync primitives
1 parent 92eb6cf commit 8ebb32b

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

cmd/tools/vdoc/vdoc.v

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import markdown
44
import os
55
import time
66
import strings
7-
import sync
87
import runtime
98
import document as doc
109
import v.vmod
@@ -184,12 +183,9 @@ fn (vd &VDoc) get_file_name(mod string, out Output) string {
184183
return name
185184
}
186185

187-
fn (mut vd VDoc) work_processor(mut work sync.Channel, mut wg sync.WaitGroup) {
186+
fn (mut vd VDoc) work_processor(work chan ParallelDoc) {
188187
for {
189-
mut pdoc := ParallelDoc{}
190-
if !work.pop(&pdoc) {
191-
break
192-
}
188+
pdoc := <-work or { break }
193189
vd.vprintln('> start processing ${pdoc.d.base_path} ...')
194190
file_name, content := vd.render_doc(pdoc.d, pdoc.out)
195191
if vd.cfg.output_type != .none {
@@ -198,23 +194,22 @@ fn (mut vd VDoc) work_processor(mut work sync.Channel, mut wg sync.WaitGroup) {
198194
os.write_file(output_path, content) or { panic(err) }
199195
}
200196
}
201-
wg.done()
202197
}
203198

204199
fn (mut vd VDoc) render_parallel(out Output) {
205-
vjobs := runtime.nr_jobs()
206-
mut work := sync.new_channel[ParallelDoc](u32(vd.docs.len))
207-
mut wg := sync.new_waitgroup()
200+
mut work := chan ParallelDoc{cap: vd.docs.len}
208201
for i in 0 .. vd.docs.len {
209-
p_doc := ParallelDoc{vd.docs[i], out}
210-
work.push(&p_doc)
202+
work <- ParallelDoc{vd.docs[i], out}
211203
}
212204
work.close()
213-
wg.add(vjobs)
205+
206+
vjobs := runtime.nr_jobs()
207+
mut worker_threads := []thread{cap: vjobs}
208+
sw := time.new_stopwatch()
214209
for _ in 0 .. vjobs {
215-
spawn vd.work_processor(mut work, mut wg)
210+
worker_threads << spawn vd.work_processor(work)
216211
}
217-
wg.wait()
212+
worker_threads.wait()
218213
}
219214

220215
fn (mut vd VDoc) render(out Output) map[string]string {

0 commit comments

Comments
 (0)