五月天青色头像情侣网名,国产亚洲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ó)家法律
秦安县| 麦盖提县| 义马市| 莱阳市| 武平县| 盘锦市| 塘沽区| 东光县| 清徐县| 化州市| 梁河县| 博客| 呈贡县| 平武县| 芮城县| 泽库县| 黄龙县| 江川县| 蕲春县| 延寿县| 德清县| 马鞍山市| 黄山市| 扬州市| 南康市| 奉新县| 商河县| 顺昌县| 延寿县| 漳平市| 衡山县| 霍山县| 商洛市| 扎囊县| 通河县| 义乌市| 河北区| 库尔勒市| 中阳县| 汶上县| 绵阳市|