91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang多核的應用

發布時間:2020-06-09 14:28:17 來源:億速云 閱讀:239 作者:鴿子 欄目:編程語言

golang默認使用單核單線程,可以通過調整或設置運行參數設置多核多線程支持

runtime.GOMAXPROCS(int)
runtime.GOMAXPROCS(runtime.NumCPU())
直接設置環境變量$GOMAXPROCS

Go從1.5版本開始,默認采用多核執行,默認是你的CPU核心數,以前版本默認為1

那么我們在什么情況下應該用多核心來加速程序,而在什么情況下用單核即可呢?

現在我們用一簡單的程序來說明下:

package mainimport (
        "runtime"
        "fmt"
        "sync"
        "database/sql"
        _ "github.com/go-sql-driver/mysql"
	"time")//定義任務隊列var waitgroup sync.WaitGroupfunc xtgxiso(num int) {
        //fmt.Println(num)
        db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
        if err != nil {
                fmt.Println(err)
        }
        defer db.Close()
        rows, err := db.Query("select sleep(1) as a")
        if err != nil {
                fmt.Println(err)
        }
        defer rows.Close()
        var a string
        for rows.Next() {
                err = rows.Scan(&a)
                if err != nil {
                        fmt.Println(err)
                } else {
                        //fmt.Println(a)
                }
        }
        waitgroup.Done() //任務完成,將任務隊列中的任務數量-1,其實.Done就是.Add(-1)}func main() {
	//記錄開始時間
	start := time.Now()
        //設置最大的可同時使用的CPU核數和實際cpu核數一致
        runtime.GOMAXPROCS(1)
        for i := 1; i <= 10; i++ {
                waitgroup.Add(1) //每創建一個goroutine,就把任務隊列中任務的數量+1
                go xtgxiso(i)
        }
        waitgroup.Wait() //Wait()這里會發生阻塞,直到隊列中所有的任務結束就會解除阻塞
	//記錄結束時間
	end :=  time.Now()
	//輸出執行時間,單位為秒。
	fmt.Println(end.Sub(start).Seconds())}

這個程序是執行十次”select sleep(1) as a“.如果是順序阻塞執行的話,執行時間肯定是10s以上,而我們用的協程不會有這種情況。我們可以修改“runtime.GOMAXPROCS(1)”來設置是單核還是多核心執行。

以上就是golang如何利用多核的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涪陵区| 白银市| 田林县| 镇平县| 乌鲁木齐市| 汝南县| 剑阁县| 商丘市| 兰考县| 同江市| 搜索| 思南县| 神农架林区| 东辽县| 象山县| 鄂托克旗| 台北市| 景德镇市| 漠河县| 河源市| 宁阳县| 兴义市| 隆化县| 宿松县| 罗定市| 玉林市| 白水县| 旬阳县| 河津市| 平遥县| 海安县| 汝南县| 衡南县| 洛宁县| 桦南县| 锡林浩特市| 常山县| 桐乡市| 双江| 佛坪县| 老河口市|