首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
清单首页golang文章详情

golang学习笔记——协程

当主协程退出后子协程也会退出

package main

import (

"fmt"

"time"

)

func main() {

go func() {

i := 0

for {

i++

fmt.Println("son i = ", i)

time.Sleep(time.Second)

}

}()

for i := 0; i < 3; i++ {

fmt.Println("main i = ", i)

time.Sleep(time.Second)

if i == 2 {

break

}

}

}

runtime包

  • runtime.Gosched() 让出当前执行权限

package main

import (

"fmt"

"runtime"

)

func main() {

//设置为单核运行

runtime.GOMAXPROCS(1)

go func() {

for i := 0; i < 5; i++ {

fmt.Println("task i = ", i)

}

}()

for i := 0; i < 2; i++ {

runtime.Gosched()

fmt.Println("main i = ", i)

}

}

  • runtime.Goexit() 终止当前协程

package main

import (

"fmt"

"runtime"

)

func test() {

defer func() {

fmt.Println("dddddddddddddddd")

}()

// return //终止函数

runtime.Goexit() //终止当前协程

fmt.Println("ccccccccccccccccccc")

}

func main() {

go func() {

fmt.Println("aaaaaaaaaaaaaaaa")

test()

fmt.Println("bbbbbbbbbbbbbbb")

}()

for {

}

}

//********输出***********

aaaaaaaaaaaaaaaa

dddddddddddddddd

  • runtime.GOMAXPROCS() 设置执行指令的cpu核数,返回上一次执行设置的cpu核数
下一篇
举报
领券