aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2026-06-09 21:22:42 -0700
committerRose Hogenson <rosehogenson@posteo.net>2026-06-09 21:22:42 -0700
commit86b515a6bfcb9b5a162e9bac6473c9886d2911f2 (patch)
tree610d4b26579ce5ce1d5bc9cfe8c3d1ca775c7cca
parent0cf646b8ae96774aba513dcde99e7ffc11c0e7f9 (diff)
downloadimgutil-86b515a6bfcb9b5a162e9bac6473c9886d2911f2.tar.zst
Add a concurrency limit
-rw-r--r--ils.go29
1 files changed, 17 insertions, 12 deletions
diff --git a/ils.go b/ils.go
index 05ece82..71701c9 100644
--- a/ils.go
+++ b/ils.go
@@ -204,19 +204,24 @@ func thumbnailFiles(w io.Writer, imagePaths []string, width, rowWidth, cellX, ce
rowImages[i] = make(chan image.Image, 1)
}
errCh := make(chan error, 1)
- for i, row := range rows {
- go func() {
- img, err := compositeImageRow(row, width*cellX, rowWidth*cellX, cellX, aspectRatio)
- if err != nil {
- select {
- case errCh <- err:
- default:
+ go func() {
+ sem := make(chan struct{}, 20)
+ for i, row := range rows {
+ sem <- struct{}{}
+ go func() {
+ defer func() { <-sem }()
+ img, err := compositeImageRow(row, width*cellX, rowWidth*cellX, cellX, aspectRatio)
+ if err != nil {
+ select {
+ case errCh <- err:
+ default:
+ }
+ return
}
- return
- }
- rowImages[i] <- img
- }()
- }
+ rowImages[i] <- img
+ }()
+ }
+ }()
for i, row := range rows {
thisRowWidth := 0
for j, filename := range row {