码迷,mamicode.com
首页 > 其他好文 > 详细

Golang 协程

时间:2020-08-17 17:19:44      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:loading   runtime   lazy   strong   time()   out   tin   java   ima   

Golang 协程

协程的特点

  • 独立的栈空间
  • 共享程序堆空间
  • 调度由用户控制
  • 协程是轻量级的线程

案例

编写一个程序完成如下功能:

  1. 在主线程中,开启一个goroutine, 该协程每隔1秒输出“hello world”
  2. 在主线程中也每隔一秒输出“hello golang”, 输出10次
  3. 要求主线程和goroutine同时执行
func test(){
	for i := 0; i < 10; i++ {
		fmt.Println("hello world",i)
		time.Sleep(time.Second)
	}
}
func main() {
	go test()
	for i := 0; i < 10; i++ {
		fmt.Println("hello golang", i)
		time.Sleep(time.Second)
	}
}

主线程和协程的执行流程图

技术图片

与Java中的线程不同,Java如果没有设置守护线程,main线程需要在其他线程结束后才会退出

获取cpu核数

等同于Java中的Runtime.getRuntime().availableProcessors();

func main() {
	cpu := runtime.NumCPU()
	fmt.Println(cpu)
}

Golang 协程

标签:loading   runtime   lazy   strong   time()   out   tin   java   ima   

原文地址:https://www.cnblogs.com/kikochz/p/13504184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!