3,1 идут образец контекста кода

context.WithCancel
возвращает два связанныхними объектов, CTX и отменить, отменить вызовчтобы послать нулевой STRUCT CTX, CTX раз получая объект для завершения выполнения goroutine;
CTX потокобезопасен, он может одновременно передаваться к множеству goroutine, запуская отменить, отменить выполнение всех goroutine
пакет основной 

импорт ( 
    " контекст " 
    " FMT " 
    " время " 
) 

Func TestContext () { 
    CTX, отмена: = context.WithCancel (context.Background ()) 
    идут d1 (CTX) 
    идти d2 (CTX) 
    
    time.Sleep ( 7 * time.Second) 
    отменить () 
} 

FUNC d1 (CTX context.Context) { 
    я: = 0 
    для { 
        time.Sleep ( 1 * time.Second) 
        я ++
         выберите {
             случай <-ctx.Done (): 
                fmt.Println ( " d1 над " )
                 возвращаемое значение по 
                
            умолчанию : 
                fmt.Println ( " d1 " , я) 
        } 
    } 
} 

FUNC d2 (CTX context.Context) { 

    fmt.Println ( " d2 начать " )
     < - ctx.Done () 
    fmt.Println ( " d2 над " ) 
} 

функ Основной () { 
    TestContext () 
    fmt.Println ( " Основной над " ) 
}

экспорт

d2 начать 
d1   1 
d1   2 
d1   3 
d1   4 
d1   5 
d1   6 
магистраль над

 

рекомендация

отwww.cnblogs.com/perfei/p/11529122.html