为了账号安全,请及时绑定邮箱和手机立即绑定

goroutines 导致严重的减速和头痛

goroutines 导致严重的减速和头痛

Go
潇潇雨雨 2021-06-01 18:25:35
我在使用 goroutine 时遇到了一些问题。为什么这段代码在 ~125ms 内执行(注意顺序执行):package mainimport (  "os/exec"  "time"  "fmt")func main() {  cmd := exec.Command("lessc", "--yui-compress", "test.less")  n := 2000  start := time.Now()  for i := 0; i < n; i++ {    cmd.Run()  }  finish := time.Now()  fmt.Printf("Program took %v to run\n", finish.Sub(start))}当这段代码需要大约 20 秒时(使用 goroutines 并发执行):package mainimport (  "os/exec"  "time"  "fmt")func main() {  cmd := exec.Command("lessc", "--yui-compress", "test.less")  ch := make(chan bool)  n := 2000  start := time.Now()  for i := 0; i < n; i++ {    go lessc(ch, cmd)  }  fmt.Println(n, " goroutines started.")  for i := 0; i < n; i++ {    _ = <-ch  }  finish := time.Now()  fmt.Printf("Program took %v to run\n", finish.Sub(start))}func lessc(ch chan bool, c *exec.Cmd) {  c.Run()  ch <- true}在 i7 720QM (4C/8T) 8GB RAM linux/x86-64 上使用 go 1.0.3 也使用 1.0.2 构建和测试,并在同一台机器上遇到了同样的问题。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信