golang查看开1000个协程占用多少个线程

1,008 阅读1分钟

开启1000个协程

package main

import (
   "time"
)

// main函数也是协程
func main() {
   // 查看开1000个协程后系统占用多少个线程
   var a [1000]int

   for i := 0; i < 1000; i++ {
      go func(i int) {
         for {
            a[i]++
         }
      }(i)
   }

   time.Sleep(time.Minute)
}

查看协程占用情况

// 因代码中开启协程后一直在进行运算,故CPU占用肯定很高;此处以CPU进行排序
top -o cpu
// 执行代码 
go run main.go

image.png

根据图片可以看出 开启了9个线程,当前活动线程有8个(活动线程根据实际执行情况会有变化)