欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

goroutine/Gosched/Goexit/GOMAXPROCS

goroutine

// code_037_concurrency_goroutine project main.go
package main

import (
    "fmt"
    "time"
)

//并發(fā),concurrency; 并行,parallel;而Go從語(yǔ)言層面就支持了并行,而Go語(yǔ)言提供了自動(dòng)垃圾回收機(jī)制。
//goroutine說(shuō)到底其實(shí)就是協(xié)程,執(zhí)行g(shù)oroutine只需極少的棧內(nèi)存(大概是4~5KB),當(dāng)然會(huì)根據(jù)相應(yīng)的數(shù)據(jù)伸縮

func newTask() {
    i := 0
    for {
        i++
        fmt.Printf("new gorotine: i= %d\n", i)
        time.Sleep(1 * time.Second)
        if i == 10 {
            break
        }
    }
}

func main() {
    go newTask()

    //goroutine>>> 主goroutine退出后,其它的工作goroutine也會(huì)自動(dòng)退出
    i := 0
    for {
        i++
        fmt.Printf("main goroutine : i =%d\n", i)
        time.Sleep(1 * time.Second)
        if i == 10 {
            break
        }
    }

}

Goexit >>>

// code_039_goroutine_runtime_Goexit project main.go
package main

import (
    "fmt"
    "runtime"
)

//備注:調(diào)用 runtime.Goexit() 將立即終止當(dāng)前 goroutine 執(zhí)?,調(diào)度器確保所有已注冊(cè) defer延遲調(diào)用被執(zhí)行。
func main() {
    go func() {
        defer fmt.Println("A.defer")

        func() {
            defer fmt.Println("B.defer")
            runtime.Goexit() // 終止當(dāng)前 goroutine, import "runtime"
            fmt.Println("B") //不會(huì)執(zhí)行
        }()
        fmt.Println("A") //不會(huì)執(zhí)行
    }()

    //死循環(huán),目的不讓主goroutine結(jié)束
    for {
    }
}

Gosched >>>

// code_038_goroutine_runtime project main.go
package main

import (
    "fmt"
    "runtime"
)

func main() {
    //runtime包:Gosched()、Goexit()、GOMAXPROCS()
    //runtime.Gosched() 用于讓出CPU時(shí)間片,讓出當(dāng)前goroutine的執(zhí)行權(quán)限,調(diào)度器安排其他等待的任務(wù)運(yùn)行,并在下次某個(gè)時(shí)候從該位置恢復(fù)執(zhí)行。
    //調(diào)用 runtime.Goexit() 將立即終止當(dāng)前 goroutine 執(zhí)行,調(diào)度器確保所有已注冊(cè) defer延遲調(diào)用被執(zhí)行。
    //調(diào)用 runtime.GOMAXPROCS() 用來(lái)設(shè)置可以并行計(jì)算的CPU核數(shù)的最大值,并返回之前的值。
    go func(s string) {
        for i := 0; i < 5; i++ {
            fmt.Println(s)
        }
    }("world")

    for i := 0; i < 5; i++ {
        runtime.Gosched()
        fmt.Println("Hello")
    }
}

GOMAXPROCS >>>

// code_040_goroutine_runtime_GOMAXPROCS project main.go
package main

import (
    "fmt"
    "runtime"
)

//調(diào)用 runtime.GOMAXPROCS() 用來(lái)設(shè)置可以并行計(jì)算的CPU核數(shù)的最大值,并返回之前的值。
func main() {
    n := runtime.GOMAXPROCS(1)
    //  n := runtime.GOMAXPROCS(2)
    fmt.Printf("n=%d\n", n)

    for {
        go fmt.Print(0)
        fmt.Print(1)
    }
}

網(wǎng)頁(yè)題目:goroutine/Gosched/Goexit/GOMAXPROCS
轉(zhuǎn)載注明:http://www.chinadenli.net/article22/gpcgjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)企業(yè)建站品牌網(wǎng)站建設(shè)小程序開(kāi)發(fā)網(wǎng)站排名ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司