併發
函數
oop
package main
import (
"fmt"
"time"
) func readygo() { fmt.Println("left") } func main() { go readyGo() //開啓協程 使用關鍵字go time.Sleep(1) //暫停1秒 讓協程有時間返回數據 fmt.Println("right") }
-- 建立多個協程spa
package main import ( "fmt" "time" ) func num() { //每1秒輸出一個數字 1 2 3 4 5 for i := 1; i <= 5; i++ { time.Sleep(1000 * time.Millisecond) fmt.Printf("1s: %d\n", i) } } func abc() { //每1.5秒輸出一個字母 a b c d e for i := 'a'; i <= 'e'; i++ { time.Sleep(1500 * time.Millisecond) fmt.Printf("1.5s: %c\n", i) } } func main() { go num() go abc() time.Sleep(10000 * time.Millisecond) //觀察num的3秒-4秒和abc的3秒-4.5秒 fmt.Println("main terminated") }
code
協程
blog
進程
it
package main import ( "fmt" "runtime" ) func loop() { for i := 0; i < 3; i++ { if i == 1 { runtime.Gosched() //讓出時間片 fmt.Printf("i'm out\n") //(3) // runtime.Goexit() //退出當前協程 } fmt.Printf("%d\n", i) //(1) (4)(5) } } func main() { go loop() //開啓協程 for i := 0; i < 2; i++ { runtime.Gosched() //讓出時間片,先讓別的協程loop()執行 fmt.Println("let' go") //(2) (6) } }