goroutine会先从本地队列中取G,本地队列取不到会从全局队列去取G,如果全局队列没用,则会去其他的P中窃取G来运行;

P的数据结构

struct P {
    Lock;

    uint32    status;
    P*    link;
    uint32    tick;
    M*    m;
    MCache*    mcache;

    G**    runq;
    int32    runqhead;
    int32    runqtail;
    int32    runqsize;

    G*    gfree;
    int32    gfreecnt;
};

GPM调度模型源码
image.png
image.png


lxjian01
1 声望0 粉丝

« 上一篇
k8s常用命令