QQ咨询不加好友发不了信息,咨询前先加好友! → QQ:820896380 ×

Golang协程的调度策略

go 协程调度有三种策略:g0 和 g1:抢占式调度,优先级 g1 > g0。g0 和 g1:抢占式调度,优先级 g1 > g0。非抢占式调度:协程运行至主动让出 cpu 执行权。

Golang协程的调度策略

Golang 协程的调度策略

协程是 Go 中轻量级的并发机制。调度策略决定了如何调度协程执行。Go 提供了三种调度策略:

  • G0
  • G1
  • 非抢占式调度

G0 和 G1

G0 和 G1 都是抢占式调度。这意味着正在运行的协程可以被更高优先级的协程抢占。

G1 的优先级高于 G0。如果两个协程都在可运行状态,则 G1 协程将先执行。

非抢占式调度

非抢占式调度是非抢占式的。这意味着正在运行的协程不能被抢占。它将继续运行,直到主动让出 CPU 执行权。

实战案例

使用 G0

package main

import (
    "fmt"
    "runtime"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    defer wg.Wait()

    for i := 0; i < 2; i++ {
        wg.Add(1)
        go func(i int) {
            defer wg.Done()
            fmt.Printf("协程 %d 在 G0 调度器上执行\\n", i)
            runtime.Gosched()
        }(i)
    }
}

给TA打赏
共{{data.count}}人
人已打赏
后端开发

Golang 技术在云计算领域中的应用与其他技术对比

2024-5-19 12:14:30

后端开发

PHP 函数效率优化秘籍大公开

2024-5-19 12:25:02

【腾讯云】11.11云上盛惠!云服务器首年1.8折起,买1年送3个月!
11.11云上盛惠!海量产品·轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。
查看更多相关信息>>
个人中心
购物车
优惠劵
有新私信 私信列表
搜索