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

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

Go GC 動(dòng)作是需要所有正在運(yùn)行 `goroutine` 都停止后進(jìn)行的嗎?

2023-06-15 22:14 作者:誤入歧途的先森  | 我要投稿

golang 的 GC 動(dòng)作是需要所有正在運(yùn)行 `goroutine` 都停止后進(jìn)行的嗎

是的,Go語(yǔ)言的垃圾回收器需要所有的goroutine都停止才能進(jìn)行垃圾回收。這是為了確保回收器不會(huì)在回收對(duì)象時(shí)與正在使用它們的goroutine發(fā)生沖突。因此,在進(jìn)行垃圾回收時(shí),Go程序會(huì)停止所有正在運(yùn)行的goroutine,并在垃圾回收完成后恢復(fù)它們的運(yùn)行。

那么為什么我單核處理器 子goroutine在執(zhí)行中,但是GC還是執(zhí)行完了呢

在Go語(yǔ)言中,垃圾回收器是通過(guò)并發(fā)標(biāo)記和并發(fā)清除的方式來(lái)進(jìn)行垃圾回收的。在標(biāo)記階段,垃圾回收器會(huì)遍歷整個(gè)堆,標(biāo)記所有存活的對(duì)象。這個(gè)過(guò)程是并發(fā)執(zhí)行的,可以與正在運(yùn)行的goroutine同時(shí)進(jìn)行。在清除階段,垃圾回收器會(huì)清除所有未被標(biāo)記的對(duì)象。這個(gè)過(guò)程也是并發(fā)執(zhí)行的,可以與正在運(yùn)行的goroutine同時(shí)進(jìn)行。

因此,即使有一些goroutine正在運(yùn)行,垃圾回收器也可以在并發(fā)執(zhí)行的情況下完成垃圾回收。但是,在某些情況下,如果垃圾回收器需要等待某些goroutine完成才能繼續(xù)執(zhí)行,它可能會(huì)暫停這些goroutine,并在垃圾回收完成后恢復(fù)它們的運(yùn)行。

golang中 runtime.Gosched()函數(shù)作用

runtime.Gosched()函數(shù)是Go語(yǔ)言中的一個(gè)函數(shù),它的作用是讓出當(dāng)前goroutine的執(zhí)行權(quán)限,讓其他goroutine有機(jī)會(huì)運(yùn)行。當(dāng)調(diào)用runtime.Gosched()函數(shù)時(shí),當(dāng)前goroutine會(huì)被暫停,然后被放回到等待運(yùn)行的隊(duì)列中,等待調(diào)度器重新安排它的運(yùn)行。

這個(gè)函數(shù)通常用于幫助避免goroutine的饑餓狀態(tài),即某些goroutine一直占用CPU資源,導(dǎo)致其他goroutine無(wú)法運(yùn)行。通過(guò)在適當(dāng)?shù)臅r(shí)候調(diào)用runtime.Gosched()函數(shù),可以讓其他goroutine有機(jī)會(huì)運(yùn)行,并避免出現(xiàn)饑餓狀態(tài)。

需要注意的是,runtime.Gosched()函數(shù)只是讓出當(dāng)前goroutine的執(zhí)行權(quán)限,并不能保證其他goroutine會(huì)立即運(yùn)行。調(diào)度器會(huì)根據(jù)一定的策略來(lái)安排goroutine的運(yùn)行,因此在某些情況下,其他goroutine可能仍然無(wú)法運(yùn)行。


Go GC 動(dòng)作是需要所有正在運(yùn)行 `goroutine` 都停止后進(jìn)行的嗎?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
沂水县| 通化市| 富源县| 中山市| 桑植县| 十堰市| 蓬溪县| 神农架林区| 蕲春县| 泗洪县| 遵化市| 山西省| 陵水| 东兴市| 修水县| 运城市| 大洼县| 阿鲁科尔沁旗| 林芝县| 菏泽市| 崇文区| 静海县| 青铜峡市| 汕头市| 文安县| 富川| 宝丰县| 三原县| 扬州市| 青川县| 宣汉县| 遂宁市| 金堂县| 迁安市| 油尖旺区| 永定县| 小金县| 东乌| 农安县| 宜良县| 玉屏|