From b480e0a9b9ed764dba3790eee6f89eb775495698 Mon Sep 17 00:00:00 2001 From: NatureFreshMilk Date: Thu, 17 Jan 2019 14:51:48 +0100 Subject: [PATCH] multithreaded --- initialrenderer/renderer.go | 52 +++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/initialrenderer/renderer.go b/initialrenderer/renderer.go index 47134da..2987835 100644 --- a/initialrenderer/renderer.go +++ b/initialrenderer/renderer.go @@ -9,6 +9,12 @@ import ( ) +func worker(tr *tilerenderer.TileRenderer, jobs <-chan coords.TileCoords){ + for coord := range(jobs){ + tr.Render(coord) + } +} + func Render(tr *tilerenderer.TileRenderer, layers []layerconfig.Layer){ @@ -16,33 +22,22 @@ func Render(tr *tilerenderer.TileRenderer, complete_count := 512*512 current_count := 0 - for _, layer := range(layers) { + jobs := make(chan coords.TileCoords, 100) - // zoom:1 == length=1 - // zoom:2 == length=2 - // zoom:3 == length=4 - // zoom:4 == length=8 - // zoom:5 == length=16 - // zoom:6 == length=32 - // zoom:7 == length=64 - // zoom:8 == length=128 - // zoom:9 == length=256 - // zoom:10 == length=512 - // zoom:11 == length=1024 - // zoom:12 == length=2048 - // zoom:13 == length=4096 + go worker(tr, jobs) + go worker(tr, jobs) + go worker(tr, jobs) + go worker(tr, jobs) + + for _, layer := range(layers) { //zoom 10 iterator for x := -255; x<256; x++ { for y := -255; y<256; y++ { tc := coords.NewTileCoords(x,y,10,layer.Id) - _, err := tr.Render(tc) + jobs <- tc current_count++ - if err != nil { - panic(err) - } - if time.Now().Sub(start).Seconds() > 2 { start = time.Now() progress := float64(current_count) / float64(complete_count) * 100 @@ -59,5 +54,24 @@ func Render(tr *tilerenderer.TileRenderer, } } + } + + close(jobs) + } + + +// zoom:1 == length=1 +// zoom:2 == length=2 +// zoom:3 == length=4 +// zoom:4 == length=8 +// zoom:5 == length=16 +// zoom:6 == length=32 +// zoom:7 == length=64 +// zoom:8 == length=128 +// zoom:9 == length=256 +// zoom:10 == length=512 +// zoom:11 == length=1024 +// zoom:12 == length=2048 +// zoom:13 == length=4096