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

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
	"os/exec"
8
	"os/exec"
9
	"path"
9
	"path"
10
	"strings"
10
	"strings"
11
	"sync"
11
	"time"
12
	"time"
12
)
13
)
13
14
14
var userName = "heyLu"
15
var userName = "heyLu"
15
var directory = "github-stars"
16
var directory = "github-stars"
17
var concurrency = 10
16
18
17
func main() {
19
func main() {
18
	var stars []starInfo
20
	var stars []starInfo
22
		panic(err)
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
	for _, info := range stars {
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
func updateRepo(info starInfo) error {
51
func updateRepo(info starInfo) error {