亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

彭阳县| 盈江县| 灵武市| 阳江市| 青铜峡市| 浑源县| 曲周县| 上饶市| 许昌市| 汉川市| 秦安县| 凤山县| 郧西县| 深州市| 比如县| 林口县| 名山县| 怀安县| 买车| 黄梅县| 凤庆县| 呼玛县| 当阳市| 江陵县| 垫江县| 罗甸县| 城市| 大化| 台中市| 秀山| 弥勒县| 祁连县| 红原县| 贺州市| 汶上县| 平邑县| 新干县| 克山县| 中卫市| 伊川县| 清原|