- 1.鎖相關(guān)
核心是利用了atomic包,由操作系統(tǒng)和硬件支持廷蓉。互斥鎖 sync.Mutex
1.直接獲取鎖,返回
2.自旋和喚醒(cas算法,非阻塞同步)
3.判斷各種狀態(tài)脖卖,特殊情況處理
Mutex 實(shí)現(xiàn)中有兩種模式,1:正常模式鹦赎,2:饑餓模式甚脉,前者指的是當(dāng)一個(gè)協(xié)程獲取到鎖時(shí),后面的協(xié)程會(huì)排隊(duì) (FIFO), 釋放鎖時(shí)會(huì)喚醒最早排隊(duì)的協(xié)程勉盅,這個(gè)協(xié)程會(huì)和正在 CPU 上運(yùn)行的協(xié)程競(jìng)爭(zhēng)鎖佑颇,但是大概率會(huì)失敗,為什么呢草娜?因?yàn)槟闶莿偙粏拘训奶粜兀€沒有獲得 CPU 的使用權(quán),而 CPU 正在執(zhí)行的協(xié)程肯定比你有優(yōu)勢(shì)宰闰,如果這個(gè)被喚醒的協(xié)程競(jìng)爭(zhēng)失敗茬贵,并且超過了 1ms,那么就會(huì)退回到后者 (饑餓模式)移袍,這種模式下解藻,該協(xié)程在下次獲取鎖時(shí)直接得到,不存在競(jìng)爭(zhēng)關(guān)系葡盗,本質(zhì)是為了防止協(xié)程等待鎖的時(shí)間太長(zhǎng)螟左。讀寫鎖 sync.RWMutex
RWMutex.readerCount是個(gè)整型值,用于表示讀者數(shù)量,int32類型胶背,最大值為30(寫在源碼里)其他:
使用 - race 在運(yùn)行時(shí)檢測(cè)數(shù)據(jù)競(jìng)爭(zhēng)問題虫啥,go test -race ....,go build -race ....
使用 go-deadlock 檢測(cè)死鎖奄妨,和指定鎖超時(shí)的等待問題
能用 channel 就不用 lock
- 2.介紹一下線程安全的共享內(nèi)存方式
- sync.Mutex
- sync.WaitGroup
- channel
- 3.介紹一下goroutine
Go協(xié)程介紹 - 4.goroutine的自旋占用資源如何解決,gmp
自旋鎖是指當(dāng)一個(gè)線程在獲取鎖的時(shí)候涂籽,如果鎖已經(jīng)被其他線程獲取,那么該線程將循環(huán)等待砸抛,然后不斷地判斷是否能夠被成功獲取评雌,知直到獲取到鎖才會(huì)退出循環(huán)。對(duì)于互斥鎖直焙,如果資源已經(jīng)被占用景东,資源申請(qǐng)者只能進(jìn)入睡眠狀態(tài)。但是自旋鎖不會(huì)引起調(diào)用者睡眠奔誓,如果自旋鎖已經(jīng)被別的執(zhí)行單元保持斤吐,調(diào)用者就一直循環(huán)在那里看是否該自旋鎖的保持者已經(jīng)釋放了鎖。
5.介紹Linux系統(tǒng)信號(hào)
6.goroutine搶占時(shí)機(jī),gc棧掃描
7.Gc觸發(fā)時(shí)機(jī)
8.是否了解其他gc機(jī)制
9.內(nèi)存管理方式
10.Channel分配在堆上還是在棧上厨喂?哪些對(duì)象分配在堆上和措?哪些對(duì)象分配在棧上?
11.代碼效率分析蜕煌,考慮局部性原理
12.多核CPU下派阱,cache如何保持一致,不沖突
13.uint類型溢出
14.聊聊rune類型
15.介紹一下channel斜纪,有緩沖和無緩沖的區(qū)別
16.channel是否線程安全
17.介紹一下Mutex的實(shí)現(xiàn),是悲觀鎖還是樂觀鎖
18.Mutex幾種模式?
19.Muxtez可以做自旋鎖?
20.介紹一下RWMutex
21.介紹一下大對(duì)象和小對(duì)象贫母,為什么小對(duì)象多了會(huì)造成gc壓力?
22.介紹項(xiàng)目中遇到的oop情況
23.介紹項(xiàng)目中遇到的坑
24.如果指定指令執(zhí)行的順序
25.什么是寫屏障盒刚、混合寫屏障腺劣,如何實(shí)現(xiàn)?
26.gc的stw是怎么回事
27.協(xié)程之間是怎么調(diào)度的
28.簡(jiǎn)單聊聊內(nèi)存逃逸
29.為sync.WaitGroup中Wait函數(shù)支持 WaitTimeout 功能.
30.字符串轉(zhuǎn)成byte數(shù)組因块,會(huì)發(fā)生內(nèi)存拷貝嗎橘原?
31.http包的內(nèi)存泄漏
32.Goroutine調(diào)度策略
33.對(duì)已經(jīng)關(guān)閉的的chan進(jìn)行讀寫,會(huì)怎么樣贮聂?為什么靠柑?
34.實(shí)現(xiàn)阻塞讀的并發(fā)安全Map
35.什么是goroutine leak寨辩?
36.data race問題怎么解決吓懈?能不能不加鎖解決這個(gè)問題?
37.epoll原理
38.etcd怎么實(shí)現(xiàn)分布式鎖?
39.滑動(dòng)窗口的概念以及應(yīng)用?
40.grpc內(nèi)部原理是什么靡狞?
41.http2的特點(diǎn)是什么,與http1.1的對(duì)比耻警。
42.time.Now有幾次系統(tǒng)調(diào)用?如何優(yōu)化
43.空struct{}是否使用過?會(huì)在什么情況下使用甘穿,舉例說明一下腮恩。
44.聊聊runtime
45.介紹下你平時(shí)都是怎么調(diào)試bug以及性能問題的?
46.通過通信來共享內(nèi)存,而不是通過共享內(nèi)存而通信温兼,怎么理解這句話秸滴,如何處理共享變量?
47.chan比mutex更輕么募判?還有更輕量的方法么荡含?
48.什么時(shí)候用chan不如mutex效率高?
一些找實(shí)習(xí)的go股文
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門登淘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躺盛,“玉大人,你說我怎么就攤上這事形帮〔郾梗” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵辩撑,是天一觀的道長(zhǎng)界斜。 經(jīng)常有香客問我,道長(zhǎng)合冀,這世上最難降的妖魔是什么各薇? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮君躺,結(jié)果婚禮上峭判,老公的妹妹穿的比我還像新娘。我一直安慰自己棕叫,他們只是感情好林螃,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俺泣,像睡著了一般疗认。 火紅的嫁衣襯著肌膚如雪完残。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼鹏秋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了亡笑?” 一聲冷哼從身側(cè)響起侣夷,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仑乌,沒想到半個(gè)月后百拓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡晰甚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年衙传,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厕九。...
- 正文 年R本政府宣布畅买,位于F島的核電站并闲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谷羞。R本人自食惡果不足惜帝火,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望湃缎。 院中可真熱鬧犀填,春花似錦、人聲如沸嗓违。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽靠瞎。三九已至比庄,卻和暖如春求妹,著一層夾襖步出監(jiān)牢的瞬間乏盐,已是汗流浹背佳窑。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像何吝,于是被迫代替她去往敵國(guó)和親溉委。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- https://draveness.me/golang/[https://draveness.me/golang/...
- golang go和php的區(qū)別類型:go為編譯性語言爱榕;php解釋性語言錯(cuò)誤:go的錯(cuò)誤處理機(jī)制瓣喊;php本身或者框...
- 1、select是隨機(jī)的還是順序的黔酥?select的使用場(chǎng)景藻三? select會(huì)隨機(jī)選擇一個(gè)可用通道做收發(fā)操作.常用語...
- 參考連接: https://www.cnblogs.com/xumaojun/p/8547439.html htt...
- 目錄 統(tǒng)一規(guī)范篇 命名篇 開發(fā)篇 優(yōu)化篇 統(tǒng)一規(guī)范篇 本篇主要描述了公司內(nèi)部同事都必須遵守的一些開發(fā)規(guī)矩,如統(tǒng)一開...