Просмотр исходного кода

Make stars fly faster

I.e. update them in parallel.
Lucas Stadler лет назад: 10
Родитель
Сommit
b019075741
1 измененных файлов с 22 добавлено и 6 удалено
  1. 22 6
      go/stars/stars.go

+ 22 - 6
go/stars/stars.go

@ -8,11 +8,13 @@ import (
8 8
	"os/exec"
9 9
	"path"
10 10
	"strings"
11
	"sync"
11 12
	"time"
12 13
)
13 14
14 15
var userName = "heyLu"
15 16
var directory = "github-stars"
17
var concurrency = 10
16 18
17 19
func main() {
18 20
	var stars []starInfo
@ -22,14 +24,28 @@ func main() {
22 24
		panic(err)
23 25
	}
24 26
27
	sem := make(chan bool, 10)
28
	var wg sync.WaitGroup
29
30
	wg.Add(len(stars))
25 31
	for _, info := range stars {
26
		fmt.Printf("% 48s - %s\n", info.RepoName, info.Description)
27
		err := updateRepo(info)
28
		if err != nil {
29
			fmt.Println(err)
30
			os.Exit(1)
31
		}
32
		info := info
33
34
		sem <- true
35
		go func() {
36
			fmt.Printf("% 48s - %s\n", info.RepoName, info.Description)
37
			err := updateRepo(info)
38
			if err != nil {
39
				fmt.Println(err)
40
				os.Exit(1)
41
			}
42
43
			wg.Done()
44
			<-sem
45
		}()
32 46
	}
47
48
	wg.Wait()
33 49
}
34 50
35 51
func updateRepo(info starInfo) error {