最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)營二期「完整」的評論 (共 條)

分享到微博請遵守國家法律
磐安县| 荆州市| 青海省| 东港市| 阿图什市| 无极县| 彰化市| 葫芦岛市| 莱西市| 遵义县| 卫辉市| 海伦市| 和顺县| 云林县| 年辖:市辖区| 新晃| 五常市| 靖西县| 寿宁县| 广水市| 汤原县| 钟祥市| 康定县| 松潘县| 金川县| 九台市| 锡林浩特市| 惠来县| 大新县| 那曲县| 乐都县| 普定县| 安徽省| 盘锦市| 长垣县| 和平县| 屏山县| 崇仁县| 沙雅县| 莒南县| 卢湾区|