五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

GoCN社區(qū)Go高級工程師實(shí)戰(zhàn)營二期「完整」

2022-10-20 22:14 作者:ashtonku  | 我要投稿

不同于傳統(tǒng)的多進(jìn)程或多線程,golang的并發(fā)執(zhí)行單元是一種稱為goroutine的協(xié)程。協(xié)程這個(gè)概念已被引入到不少語言中,比如golang、python、lua等。協(xié)程經(jīng)常被理解為輕量級線程,一個(gè)線程可以包含多個(gè)協(xié)程,共享堆不共享?xiàng)!f(xié)程間一般由應(yīng)用程序顯式實(shí)現(xiàn)調(diào)度,上下文切換無需下到內(nèi)核層,高效不少。協(xié)程間一般不做同步通訊,而golang中實(shí)現(xiàn)協(xié)程間通訊有兩種:1)共享內(nèi)存型,即使用全局變量+mutex鎖來實(shí)現(xiàn)數(shù)據(jù)共享;2)消息傳遞型,即使用一種獨(dú)有的channel機(jī)制進(jìn)行異步通訊。

GoCN社區(qū)Go高級工程師實(shí)戰(zhàn)營二期ke

下栽地止:www.ukoou.com/resource/1062




package main

import {
"fmt"
"runtime"
"time"
}
var MULTICORE int
func main() {
MULTICORE = runtime.NumCPU() //計(jì)算出本地的cpu核總數(shù)
//指定MULTICORE個(gè)核來運(yùn)行
//這里沒有設(shè)置cpu親和性,所以各個(gè)線程會在任意cpu核上跑,同一個(gè)線程也可能會不斷跳到不同核上運(yùn)行
runtime.GOMAXPROCS(MULTICORE)
// 啟動(dòng)MULTICORE個(gè)goroutine來執(zhí)行test()
for i := 0; i < MULTICORE; i++ {
go test()
}
// sleep 10s是為了讓主進(jìn)程等待所有g(shù)oroutine都運(yùn)行退出
time.Sleep(10*time.Second)
}
func test() {
for i := 0; i < 10; i++ {
fmt.Printf("test\n")
}
}


GoCN社區(qū)Go高級工程師實(shí)戰(zhàn)營二期

Go是一種新的語言,一種并發(fā)的、帶垃圾回收的、快速編譯的語言。它具有以下特點(diǎn):

它可以在一臺計(jì)算機(jī)上用幾秒鐘的時(shí)間編譯一個(gè)大型的Go程序。
Go為軟件構(gòu)造提供了一種模型,它使依賴分析更加容易,且避免了大部分C風(fēng)格include文件與庫的開頭。
Go是靜態(tài)類型的語言,它的類型系統(tǒng)沒有層級。因此用戶不需要在定義類型之間的關(guān)系上花費(fèi)時(shí)間,這樣感覺起來比典型的面向?qū)ο笳Z言更輕量級。
Go完全是垃圾回收型的語言,并為并發(fā)執(zhí)行與通信提供了基本的支持。
按照其設(shè)計(jì),Go打算為多核機(jī)器上系統(tǒng)軟件的構(gòu)造提供一種方法。

GoCN社區(qū)Go高級工程師實(shí)戰(zhàn)營二期

Go中調(diào)用匯編
假設(shè)我們做一個(gè)匯編版本的加法函數(shù)。首先GOPATH的src下新建一個(gè)add目錄,然后在該目錄加入add.go的文件,內(nèi)容如下:

package add

func Add(a, b uint64) uint64 {
return a+b
}
這個(gè)函數(shù)將兩個(gè)uint64的數(shù)字相加,并返回結(jié)果。我們寫一個(gè)簡單的函數(shù)調(diào)用它,內(nèi)容如下:

package main

import (
"fmt"
"add"
)

func main() {
fmt.Println(add.Add(2, 15))
}
可以看到輸出了結(jié)果為17。好的,接下來讓我們刪除Add函數(shù)的實(shí)現(xiàn),只留下定義部分:

package add

func Add(a, b uint64) uint64
然后在add.go同一目錄中建立一個(gè)add_amd64.s的文件(假設(shè)你使用的是64位系統(tǒng)),內(nèi)容如下:

TEXT ·Add+0(SB),$0-24
MOVQ a+0(FP),BX
MOVQ b+8(FP),BP
ADDQ BP,BX
MOVQ BX,res+16(FP)
RET

GoCN社區(qū)Go高級工程師實(shí)戰(zhàn)營二期「完整」的評論 (共 條)

分享到微博請遵守國家法律
靖宇县| 郴州市| 康保县| 黄平县| 马关县| 清原| 且末县| 上虞市| 武邑县| 汕头市| 乐亭县| 本溪| 新乐市| 台东县| 铁岭县| 大庆市| 城固县| 元朗区| 吐鲁番市| 平乡县| 灵寿县| 太仆寺旗| 密山市| 五莲县| 岳西县| 科尔| 松桃| 类乌齐县| 旺苍县| 东安县| 南阳市| 游戏| 曲水县| 高要市| 泌阳县| 临海市| 荥经县| 淄博市| 巴东县| 赤城县| 神木县|