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

歡迎光臨散文網(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)遵守國家法律
拉孜县| 刚察县| 鄂尔多斯市| 壤塘县| 维西| 岐山县| 志丹县| 拉萨市| 巴塘县| 开江县| 重庆市| 福鼎市| 萝北县| 维西| 友谊县| 宁远县| 邵阳市| 伊吾县| 儋州市| 望奎县| 班玛县| 上蔡县| 温州市| 札达县| 邵东县| 嵩明县| 肇州县| 浮梁县| 德令哈市| 黄石市| 区。| 肥西县| 阆中市| 伊金霍洛旗| 通山县| 台湾省| 龙游县| 文昌市| 平顶山市| 开封市| 西安市|