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

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

go:linkname注釋講解,使用場景

2023-05-29 23:11 作者:誤入歧途的先森  | 我要投稿

讀源碼的時(shí)候我們經(jīng)常會(huì)讀著讀著 就變成了一個(gè)函數(shù)沒有實(shí)現(xiàn) 之后上面帶著//go:linkname上面的函數(shù);

為什么會(huì)有這種函數(shù)呢?首先我們看一個(gè)time包的函數(shù):

time.runtimeNano()

查看它的源碼:

調(diào)用的是這個(gè)沒有實(shí)現(xiàn)方法的函數(shù)

//go:linkname localname [importpath.name]

使用[importpath.name]作為源代碼中聲明的localname的變量或函數(shù)。由于該指令可以破壞類型系統(tǒng)和包模塊化。因此只有引用了 unsafe 包才可以使用。

因此我們直接看: runtime.nanotime函數(shù):

調(diào)用了nanotime1函數(shù)
看到這塊代碼,我們知道肯定是要使用到匯編指令了
按照amd64指令集我們找到了執(zhí)行的匯編指令

到這里我們知道了,//go:linkname 它有一個(gè)很重要的作用:

就是執(zhí)行一些需要很高性能,但是為了代碼簡潔,而直接使用了其他包的執(zhí)行方法,因?yàn)檫@些方法大部分都是一些基礎(chǔ)語言中函數(shù)實(shí)現(xiàn),因此都集成到了runtime包中。

如果加入我們開發(fā)go性能遇到瓶頸,真的需要使用到匯編指令,這塊還是需要知道的,如果真的對(duì)go匯編比較熟悉的確是一個(gè)很牛X的選擇(前提是對(duì)匯編和機(jī)器指令了如指掌)。

????視頻內(nèi)容大部分就是如何在go項(xiàng)目中使用到//go:linkname,舉例子:

項(xiàng)目文件結(jié)構(gòu)
需要執(zhí)行的目標(biāo)函數(shù)myPrint
需要引入 unsafe 和 執(zhí)行函數(shù)的包,另外寫一個(gè)函數(shù) 之后不需要寫實(shí)現(xiàn)上面加上linkname

就上面的簡單例子就可以使用到go:linkname了,go匯編這塊后續(xù)我也準(zhǔn)備出幾期視頻講解一下,當(dāng)然是從簡單的開始講,畢竟匯編不是那么簡單的。

有什么疑問可以留言,謝謝

go:linkname注釋講解,使用場景的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
黄梅县| 岐山县| 上蔡县| 嫩江县| 巴南区| 顺昌县| 尉氏县| 兴安盟| 仪陇县| 甘泉县| 德清县| 石河子市| 常熟市| 蒙自县| 开封县| 朔州市| 视频| 永丰县| 白银市| 金昌市| 秀山| 友谊县| 漠河县| 津市市| 德清县| 阿拉尔市| 海盐县| 屏边| 孟村| 普格县| 浦江县| 巴林右旗| 枣强县| 米林县| 府谷县| 隆尧县| 闽侯县| 叶城县| 方山县| 久治县| 上虞市|